我已经将DataGridView正确绑定到我的数据表,但是我正在尝试使自动完成功能对于文本框列之一正常工作。自动完成功能正在运行,但我试图将其限制为datagridview上的仅一列。目前,它要么为每一列都做,要么什么都不做。有任何想法吗?下面的代码。

private void dataGridDetail_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        if (dataGridDetail.CurrentCell.ColumnIndex == 2)
        {
            var source = new AutoCompleteStringCollection();
            String[] stringArray = Array.ConvertAll<DataRow, String>(products.Select(), delegate(DataRow row) { return (String)row["code"]; });
            source.AddRange(stringArray);

            TextBox prodCode = e.Control as TextBox;
            if (prodCode != null)
            {
                prodCode.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                prodCode.AutoCompleteCustomSource = source;
                prodCode.AutoCompleteSource = AutoCompleteSource.CustomSource;

            }
        }
    }

最佳答案

您的if条件只是检查用户当前是否选择了第三列。

您是否要使所有该列可编辑?还是当前所选行中只有一个单元格?表单上的另一个按钮如何触发编辑?在这种情况下,当编辑变为活动状态时,可以选择任何单元格吗?

您将需要索引到正确的列并将其设置为启用自动完成功能。

10-05 22:21