【问题标题】:How to add TextBox in DataGridView at specific column?如何在特定列的 DataGridView 中添加 TextBox?
【发布时间】:2013-04-15 08:42:33
【问题描述】:
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 列相同。

请帮助我如何解决问题或任何其他最佳方法,请在此处分享。

【问题讨论】:

  • 你必须解释第二点。
  • 您好,感谢您的回复。实际上,我只想在“第一列”中添加带有 AutoCompleteStringCollection 的文本框。所以我在这里尝试了 this.dataGridView1.CurrentCell.ColumnIndex == 0。但它适用于所有具有相同行为的列。帮帮我..

标签: c# .net datagridview datagridviewcolumn datagridviewtextboxcell


【解决方案1】:

这应该可行。

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;
    }
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 2020-05-28
    相关资源
    最近更新 更多