.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;
}
哈哈,本人一試,可以了,搞定,睡覺!