主要是应用DataGridView的EditingControlShowing事件。当单元格进入编辑模式时,可以处理执行该编辑控件的自定义初始化的此事件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public DataGridViewTextBoxEditingControl
dgvTxt = null ; //
声明 一个 CellEdit private void dgv2_EditingControlShowing( object sender,
DataGridViewEditingControlShowingEventArgs e) { dgvTxt
= (DataGridViewTextBoxEditingControl)e.Control; //
赋值 dgvTxt.SelectAll(); dgvTxt.KeyPress
+= Cells_KeyPress; //
绑定到事件 } //
自定义事件KeyPress事件 private void Cells_KeyPress( object sender,
KeyPressEventArgs e) { Kzjgsl.keyPressXS(e,
dgvTxt); } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
public static void keyPressXS(KeyPressEventArgs
e, DataGridViewTextBoxEditingControl dgvTxt) { if ( char .IsNumber(e.KeyChar)
|| e.KeyChar == '.' ||
e.KeyChar == ( char )Keys.Back) { e.Handled
= false ; //让操作生效 int j
= 0; int k
= 0; bool flag
= false ; if (dgvTxt.Text.Length
== 0) { if (e.KeyChar
== '.' ) { e.Handled
= true ; //让操作失效 } } for ( int i
= 0; i < dgvTxt.Text.Length; i++) { if (dgvTxt.Text[i]
== '.' ) { j++; flag
= true ; } if (flag) { if ( char .IsNumber(dgvTxt.Text[i])
&& e.KeyChar != ( char )Keys.Back) { k++; } } if (j
>= 1) { if (e.KeyChar
== '.' ) { e.Handled
= true ; //让操作失效 } } if (k
== 2) { if ( char .IsNumber(dgvTxt.Text[i])
&& e.KeyChar != ( char )Keys.Back) { if (dgvTxt.Text.Length
- dgvTxt.SelectionStart < 3) { if (dgvTxt.SelectedText
!= dgvTxt.Text) { e.Handled
= true ; ////让操作失效 } } } } } } else { e.Handled
= true ; } } |