【问题标题】:Change C# Datagridview row selection base on textbox input value根据文本框输入值更改 C# Datagridview 行选择
【发布时间】:2021-05-13 18:38:41
【问题描述】:

我正在尝试根据在带有Suggestappend 的文本框中输入的值更改datagridview 行选择。我的自动完成字符串集合是在我的数据网格列引用中获取的。

自动完成字符串集合的代码

AutoCompleteStringCollection referenceCollection = new AutoCompleteStringCollection();

int indexOfYourColumn = 1;

                IList list = dgvScriptures.Rows;
                referenceCollection.Clear();

                for (int i = 0; i < list.Count; i++)
                {
                    DataGridViewRow row = (DataGridViewRow)list[i];
                    data = row.Cells[indexOfYourColumn].Value.ToString();
                    referenceCollection.Add(data.ToString());
                }

在文本框中输入时,值被附加但datagridview选择没有改变

private void txtSearchReference_TextChanged(object sender, EventArgs e)
        {
            try
            {
                txtSearchReference.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                txtSearchReference.AutoCompleteSource = AutoCompleteSource.CustomSource;
                txtSearchReference.AutoCompleteCustomSource = referenceCollection;

                if (txtSearchReference.Text != string.Empty)
                {
                    int rowIndex = -1;
                    DataGridViewRow row = dgvScriptures.Rows
                        .Cast<DataGridViewRow>()
                        .Where(r => r.Cells[1].Value.ToString().Contains(txtSearchReference.Text))
                        .FirstOrDefault();
                    rowIndex = row.Index;

                    dgvScriptures.Rows[rowIndex].Selected = true;
                }
            }
            catch (Exception autocomplete)
            {

                MessageBox.Show(autocomplete.ToString());
            }
            
        }

UI Design

【问题讨论】:

标签: c# datagridview


【解决方案1】:

我会说你需要改变

dgvScriptures.Rows[rowIndex].Selected = true;

dgvScriptures.CurrentCell = dgvScriptures[1,rowIndex];

1 是您搜索/构建自动完成列表的列

【讨论】:

  • dgvScriptures.CurrentCell = dgvScriptures.Cells[rowIndex,1]; DataGridView 不包含 Cells 的定义,并且没有可访问的扩展方法 Cells
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2014-10-02
  • 2016-05-17
相关资源
最近更新 更多