Новая строка, созданная в DataGridView при нажатии на раскрывающийся список автозаполнения - PullRequest
1 голос
/ 10 февраля 2012

Я реализовал автозаполнение таким образом в моем DataGridView в нескольких столбцах моего текстового поля.

var source = new AutoCompleteStringCollection();
List<string> values = new List<string>();
for (int i = 0; i < dataGridRoadway.Rows.Count - 2; i++)
{
   if (columnName == "Road Name")
      {
         values.Add(dataGridRoadway.Rows[i].Cells["Road Name"].Value.ToString());
      }
}

source.AddRange(values.ToArray());

//Set the appropriate properties on the textbox control 
TextBox dgvEditBox = e.Control as TextBox;
if (dgvEditBox != null)
{
   dgvEditBox.AutoCompleteMode = AutoCompleteMode.Suggest;
   dgvEditBox.AutoCompleteCustomSource = source;
   dgvEditBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
}

Когда элемент из моего источника автозаполнения выбран с помощью мыши, текущая строка неправильно установлена ​​на новую строку (выбор элемента из автозаполнения с помощью стрелок и табуляции не вызывает новую строку). Это, в свою очередь, запускает событие RowValidating и запускает мою логику проверки всей строки, прежде чем пользователь фактически закончит ввод данных из этой строки.

Я бы предположил, что DataGridView обнаруживает мой щелчок мыши по раскрывающемуся меню автозаполнения и связывает его с щелчком по новой строке. Конечно, это не то поведение, которое мне нужно. Это можно обойти? Есть ли способ обнаружить выбор автозаполнения и затем переопределить новую создаваемую строку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...