主要是应用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 ; } } |
原文:http://www.cnblogs.com/colder/p/3517798.html