本文引用至:http://hurt0759.blog.163.com/blog/static/6150904201008105614457/
.Net 2.0中的DataGridView比前期版本的DataGrid功能强多了,但本人还是觉得有不足的地方。比如说其DataGridViewButtonColumn列,像这样的列好像在本人开发过的系统中没有太多的用(最重要的还是不能在其上编辑,可能是没找到方法吧,再研究)。还有DataGridViewComboBoxColumn列,看起来比较漂亮,将其放在实际中,其实下拉的基本是列表或弹出一Form进行选择,但还是有问题。得到的结果要是DataGridViewComboxColumn列中的值,如果不是就会报错。还不可编辑(可能是没找到方法,再研究,找到了再继续发贴)。与以前VB6/VC6等中第三方组件开发商ComponentOne公司开发的True DB Grid还是要差点。
下面主要介绍研究成果:.Net 2.0中的键盘事件。
.Net 2.0中的键盘事件,研究了好久,只发现这两种 :一种是DataGridView键盘事件,另一种是列键盘事件。
第一种、DataGridView中键盘事件处理方法。此方法的使用与一般控件的方法相同。操作也比较简单。这种在DataGirdView中的事件用来操作比如删除一列啦,添加一列啦,还有插入一列啦什么的。键盘事件基本就三个:KeyDown,KeyPress,KeyUp三个事件,这里我只介绍一个,其他的都是相同的。简单介绍如下:
注:以下示例语句的DataGridView名为dgvDetails.
委托方法:
this.dgvDetails.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.dgvDetails_KeyPress);
方法:
private void dgvDetails_KeyPress(object sender, KeyPressEventArgs e)
{
//想怎么操作在这时处理
}
第二种、就是DataGridView中列的事件,这种事件放在DataGridView中,开始本人用KeyPress来控件输入的数据为数字,其他的输入不进去。怎么搞都不行。不好意思,本人系统没有Help。因软件是网友送的,没送Help。摸了好久,才发现有这么个方法来实现。列的事件主要用来操作列中的数据。比如说:电话号码,数量,金额啊什么的。和大家分享研究成果。
首先,要先定义一个Class级的变量(放在Form内,可别放在外面),
private DataGridViewTextBoxEditingControl EditingControl;
其次,添加EditingControlShowing事件委托
this.dgvDetails.EditingControlShowing += new System.Windows.Forms.DataGridViewEditingControlShowingEventHandler(this.dgvDetails_EditingControlShowing);
第三步,定义委托的方法:
private void dgvDetails_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
EditingControl = (DataGridViewTextBoxEditingControl)e.Control;
EditingControl.KeyPress += new KeyPressEventHandler(EditingControl_KeyPress);
}
注:加粗的地方很重要,主要是针对列的事件,这里才是正题。
第四步,定义列的委托方法啦,引用以其他控件引用完全相同。
private void EditingControl_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsDigit(e.KeyChar) ) e.Handled = true;
}
哈哈,本人一试,可以了,搞定,睡觉!Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId