【问题标题】:How to get DataGridView AutoComplete to show for only one column?如何让 DataGridView AutoComplete 仅显示一列?
【发布时间】:2014-03-31 10:54:08
【问题描述】:

问题是 AutoComplete 也会显示在第 1 列以外的列中。它最初不会显示,直到我在第 1 列中输入文本,然后它才会开始显示其他列。

我的代码:

public AutoCompleteStringCollection ClientListDropDown()
{
    AutoCompleteStringCollection asc = new AutoCompleteStringCollection();
    try
    {
        Query = "Select top 5 title from customer "; // just removed  where name like '%" + txtDVNo.Text + "%' plz check
        cmd = new SqlCommand(Query, GlobalVars.conn);
        dr = cmd.ExecuteReader();
        if ((dr != null) && (dr.HasRows))
            while (dr.Read())
                asc.Add(dr.GetValue(0).ToString());
        dr.Close();
        cmd.Dispose();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    return asc;
}

private void dgvDVDetails_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if (dgvDVDetails.CurrentCell.ColumnIndex == 1)
    {
        TextBox prodCode = e.Control as TextBox;
        if (prodCode != null)
        {
            prodCode.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            prodCode.AutoCompleteCustomSource = ClientListDropDown();
            prodCode.AutoCompleteSource = AutoCompleteSource.CustomSource;

        }
    }
}

【问题讨论】:

标签: c# autocomplete


【解决方案1】:

试试这个:

private void dgvDVDetails_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if (dgvDVDetails.CurrentCell.ColumnIndex == 1)
    {
        TextBox prodCode = e.Control as TextBox;
        if (prodCode != null)
        {
            prodCode.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            prodCode.AutoCompleteCustomSource = ClientListDropDown();
            prodCode.AutoCompleteSource = AutoCompleteSource.CustomSource;

        }
    }
   else
   {
       TextBox prodCode = e.Control as TextBox;
       if (prodCode != null)
        {
            prodCode.AutoCompleteMode = AutoCompleteMode.None;
        }
   }
}

【讨论】:

    【解决方案2】:
    private void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        { 
            TextBox autoText = e.Control as TextBox;
            autoText.AutoCompleteMode = AutoCompleteMode.None;
            autoText.AutoCompleteSource = AutoCompleteSource.None;
            AutoCompleteStringCollection DataCollection = new AutoCompleteStringCollection();
    
            if (dgv.CurrentCell.ColumnIndex == 2 )
                {
                    if (autoText != null)
                    {
                        autoText.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                        autoText.AutoCompleteSource = AutoCompleteSource.CustomSource;
                        DataCollection.Add("احسان");
                        DataCollection.Add("محسن");
                        DataCollection.Add("مهدی");
                        DataCollection.Add("رادین");
                        DataCollection.Add("رایان");
                        DataCollection.Add("سمیرا");
                        autoText.AutoCompleteCustomSource = DataCollection;
                    }
                }                
        }
    

    【讨论】:

    • 这将帮助您避免显示其他列
    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    相关资源
    最近更新 更多