winform dategridview 自动完成。
1,先上图
代码如下。
View Code
1 private AutoCompleteStringCollection autoCompleteSource = new AutoCompleteStringCollection();
2
3 private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
4 {
5 DataGridView dgv = (DataGridView)sender;
6 if (e.Control is TextBox)
7 {
8 TextBox tb = (TextBox)e.Control;
9 if (dgv.CurrentCell.OwningColumn.Name=="Name")
10 {
11 tb.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
12 tb.AutoCompleteSource = AutoCompleteSource.CustomSource;
13 tb.AutoCompleteCustomSource = this.autoCompleteSource;
14 }
15 else
16 {
17 tb.AutoCompleteMode = AutoCompleteMode.None;
18 }
19 }
20 }
21
22 private void dataGridView1_DataSourceChanged(object sender, EventArgs e)
23 {
24 var dgv = (DataGridView)sender;
25 this.autoCompleteSource.Clear();
26 foreach (DataGridViewRow r in dgv.Rows)
27 {
28 string val = r.Cells["Name"].Value as string;
29 if (!string.IsNullOrEmpty(val) && !this.autoCompleteSource.Contains(val))
30 {
31 autoCompleteSource.Add(val);
32 }
33 }
34 }
35
36 private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
37 {
38
39 }
40 //添加新的成员
41 private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
42 {
43 int i=0;
44 if (e.RowIndex == -1)
45 {
46 i = 0;
47 }
48 else
49 {
50 i = e.RowIndex;
51 }
52 var dgv = (DataGridView)sender;
53 if (dgv.Columns[e.ColumnIndex].Name == "Name")
54 {
55 string val = dgv[e.ColumnIndex, i].Value as string;
56 if (!string.IsNullOrEmpty(val) && !this.autoCompleteSource.Contains(val))
57 {
58 autoCompleteSource.Add(val);
59 }
60 }
61 }
2
3 private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
4 {
5 DataGridView dgv = (DataGridView)sender;
6 if (e.Control is TextBox)
7 {
8 TextBox tb = (TextBox)e.Control;
9 if (dgv.CurrentCell.OwningColumn.Name=="Name")
10 {
11 tb.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
12 tb.AutoCompleteSource = AutoCompleteSource.CustomSource;
13 tb.AutoCompleteCustomSource = this.autoCompleteSource;
14 }
15 else
16 {
17 tb.AutoCompleteMode = AutoCompleteMode.None;
18 }
19 }
20 }
21
22 private void dataGridView1_DataSourceChanged(object sender, EventArgs e)
23 {
24 var dgv = (DataGridView)sender;
25 this.autoCompleteSource.Clear();
26 foreach (DataGridViewRow r in dgv.Rows)
27 {
28 string val = r.Cells["Name"].Value as string;
29 if (!string.IsNullOrEmpty(val) && !this.autoCompleteSource.Contains(val))
30 {
31 autoCompleteSource.Add(val);
32 }
33 }
34 }
35
36 private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
37 {
38
39 }
40 //添加新的成员
41 private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
42 {
43 int i=0;
44 if (e.RowIndex == -1)
45 {
46 i = 0;
47 }
48 else
49 {
50 i = e.RowIndex;
51 }
52 var dgv = (DataGridView)sender;
53 if (dgv.Columns[e.ColumnIndex].Name == "Name")
54 {
55 string val = dgv[e.ColumnIndex, i].Value as string;
56 if (!string.IsNullOrEmpty(val) && !this.autoCompleteSource.Contains(val))
57 {
58 autoCompleteSource.Add(val);
59 }
60 }
61 }
通过以上几个步骤就可以完成自动完成的实现了。