C#中datagridview使用技巧系列谈(-)让输入焦点从左到右
2008-06-28 22:33
453 查看
问题的提出
经常使用的datagridview控件,当你利用它来输入数据时,如果你按下Enter 时,系统默认的是将输入焦点移动至当前列的下一行,但按中国人日常的习惯,我们希望它从左到右进行输入,怎么办呢?
这里我们就要修改系统的两个默认键盘时间,以实现我们自如的控制datagridview埪件对回车Press事件的处理方式,具体怎么操作呢?
新建一用户控件-该用户埪件继承于datagridview,在该埪件的代码中重写ProcessDialogKey, ProcessDataGridViewKey两个事件,让将该用户控件添加到你的项目中就可以应用了。
public class dgv : DataGridView
{ protected override bool ProcessDialogKey(Keys keyData)
{ Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter)
{ return this.ProcessRightKey(keyData);
}
return base.ProcessDialogKey(keyData);
}
protected override bool ProcessDataGridViewKey(KeyEventArgs e)
{ if (e.KeyCode == Keys.Enter)
{ return this.ProcessRightKey(e.KeyData); }
return base.ProcessDataGridViewKey(e); }
public new bool ProcessRightKey(Keys keyData)
{ Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter) {
// for new row use
//如果dgv中输入焦点在最后一行最后一列则新增行,并将输入交代那移到新增行,首列 if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex == (base.RowCount - 1)))
{ ((BindingSource)base.DataSource).AddNew(); base.CurrentCell = base.Rows[base.RowCount - 1].Cells[0];
return true; }
if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex + 1 != base.NewRowIndex))
{ base.CurrentCell = base.Rows[base.CurrentCell.RowIndex + 1].Cells[0]; return true; }
return base.ProcessRightKey(keyData); }
return base.ProcessRightKey(keyData); }
}
经常使用的datagridview控件,当你利用它来输入数据时,如果你按下Enter 时,系统默认的是将输入焦点移动至当前列的下一行,但按中国人日常的习惯,我们希望它从左到右进行输入,怎么办呢?
这里我们就要修改系统的两个默认键盘时间,以实现我们自如的控制datagridview埪件对回车Press事件的处理方式,具体怎么操作呢?
新建一用户控件-该用户埪件继承于datagridview,在该埪件的代码中重写ProcessDialogKey, ProcessDataGridViewKey两个事件,让将该用户控件添加到你的项目中就可以应用了。
public class dgv : DataGridView
{ protected override bool ProcessDialogKey(Keys keyData)
{ Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter)
{ return this.ProcessRightKey(keyData);
}
return base.ProcessDialogKey(keyData);
}
protected override bool ProcessDataGridViewKey(KeyEventArgs e)
{ if (e.KeyCode == Keys.Enter)
{ return this.ProcessRightKey(e.KeyData); }
return base.ProcessDataGridViewKey(e); }
public new bool ProcessRightKey(Keys keyData)
{ Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter) {
// for new row use
//如果dgv中输入焦点在最后一行最后一列则新增行,并将输入交代那移到新增行,首列 if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex == (base.RowCount - 1)))
{ ((BindingSource)base.DataSource).AddNew(); base.CurrentCell = base.Rows[base.RowCount - 1].Cells[0];
return true; }
if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex + 1 != base.NewRowIndex))
{ base.CurrentCell = base.Rows[base.CurrentCell.RowIndex + 1].Cells[0]; return true; }
return base.ProcessRightKey(keyData); }
return base.ProcessRightKey(keyData); }
}
相关文章推荐
- C#中datagridview使用技巧系列谈(-)让输入焦点从左到右收藏
- CSS 翻译系列_(使用简单CSS技巧增强你的Input输入域)
- DataGridView使用技巧十一:DataGridView用户输入时,单元格输入值的设定
- Android Studio使用技巧系列教程(七)
- C++基础学习系列--1、1的简陋版本--输入输出流与字符串变量的使用
- DataGridView使用技巧一:获取或设置当前单元格的内容
- 微软BI 之SSRS 系列 - 使用 LookupSet 和 Adjacent Group 等高级技巧在报表中跨 Dataset 分组查询
- Android Studio使用技巧系列教程(三)
- linux shell 动态生成 数组系列 seq使用技巧
- Google Map开发系列(一)——谷歌地图API密钥(API Key)的解读和使用技巧
- 在Eclipse中使用技巧的总结系列
- 数据窗口使用技巧系列文章--回车键的完整编程
- DataGridView使用技巧九:DataGridView的右键菜单(ContextMenuStrip)
- [C# 开发技巧系列]使用C#操作Word和Excel程序
- golang系列----接口使用技巧(interface)
- [C# 开发技巧系列] 使用C#操作幻灯片 推荐
- 27:ASP.NET复习系列- ADO.NET基本知识点-数据集的使用方法和技巧
- Jetbrains系列(idea webstorm等)使用svn技巧
- 编程技巧系列(6)如何使用MessageFormat格式化json串
- Android Studio使用技巧系列教程(二)