1,先上图
代码如下。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
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 }
通过以上几个步骤就可以完成自动完成的实现了。