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         }
 

 通过以上几个步骤就可以完成自动完成的实现了。

 

 

 

 

posted on 2011-09-15 11:26  wtq  阅读(887)  评论(0编辑  收藏  举报