如何在特定列的DataGridView中添加TextBox?

时间:2013-04-15 08:42:34

标签: c# .net datagridview datagridviewcolumn datagridviewtextboxcell

void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
     TextBox txtbox = e.Control as TextBox;
     if (this.dataGridView1.CurrentCell.ColumnIndex == 0)
     {
         if (txtbox != null)
         {
             //
         }
     }
}

我也用AutoCompleteStringCollection编码。

代码正在运作,

  1. 在编辑第1列之前,它不允许任何其他列的自动完成。

  2. 编辑第1列后,所有列都将与第1列相同。

  3. 请帮我解决问题的方法或其他最佳方式,请在此处分享。

1 个答案:

答案 0 :(得分:0)

这应该有用。

private bool firstColEdited = false;
/************************************************************/
var source = new AutoCompleteStringCollection();
String[] stringArray = Array.ConvertAll<DataRow, String>(products.Select(), delegate(DataRow row) { return (String)row["code"]; });
source.AddRange(stringArray);
/************************************************************/
void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    TextBox txtbox = e.Control as TextBox;
    if (this.dataGridView1.CurrentCell.ColumnIndex == 0 || firstColEdited)
    {
        firstColEdited = true;
        txtbox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        txtbox.AutoCompleteCustomSource = source;
        txtbox.AutoCompleteSource = AutoCompleteSource.CustomSource;
    }
 }