2015-09-29 2 views
0

У меня есть простой DataGridView:DataGridView TextBox колонка с автозаполнения, заполняющую другие клетки

DataGridView

У меня есть класс:

public class TemplateItem 
{ 
    public string Name { get; set; } 
    public decimal Price { get; set; } 
} 

и список для хранения шаблонов:

List<TemplateItem> templates = new List<TemplateItem>(); 
// Some code to populate the list 

Для ячейки «Name» в сетке я хочу:

  • варианта отображение автозаполнение из templates списка, когда пользователь вводит в ячейке
  • автоматически установить «Цену» клетку к цене опциона автозаполнения, что пользователь выбрал (пользователь может изменить цену после)
  • позволяют пользователю вводить что-то не доступно в списке templates

Я знаю, как включить автозаполнение с помощью EditingControlShowing события, как в this question.

Я не знаю, как определить выбор варианта автозаполнения. Using KeyDown event не работает для меня - он никогда не срабатывает.

И я не знаю, как получить цену выбранного варианта. Предположим, что я смог поймать событие «option selected», я смог пройти через шаблоны и найти одно с тем же именем ... но это кажется уродливым кодом для меня. Я должен как можно скорее передать информацию о цене за каждый вариант, не так ли?

ответ

0

В результате я изменил свой пользовательский интерфейс, чтобы сетка больше не позволяла пользователю вводить новые строки. Вместо этого у меня есть отдельный ComboBox (DropDownStyle, установленный на DropDown) с включенной функцией автозапуска и кнопкой «добавить» для вставки новых строк на основе значения из выпадающего списка. Если выбран существующий шаблон, его цена также вставлена; в противном случае вводится только введенный текст.

Если кто знает, как достичь такой же функциональности в datagridview, сообщите мне.

Смежные вопросы