DataGridViewTextBoxColumn, который изменяется на ComboBox при редактировании

Я хочу показать DataGridView со столбцом ComboBox, который выглядит как DataGridViewTextBoxColumn.

В DataGridView у меня отображается DataGridViewTextBoxColumn, и когда пользователь устанавливает фокус на ячейку в этом столбце, ячейка должна быть изменена на ComboBox.

Я не знаю, какую функцию нужно переопределить.

В DataGridTextBoxColumn есть функция Edit, могу ли я нарисовать свое поле со списком во время этой функции?


person Robert    schedule 19.09.2011    source источник


Ответы (1)


Если я что-то не упустил - вы должны просто использовать тип столбца DataGridViewComboBoxColumn.

В зависимости от того, как вы добавляете свои столбцы, вы либо выбираете этот тип в раскрывающемся списке «Тип» в диалоговом окне «Добавить столбец», либо добавляете его программно следующим образом:

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
dataGridView1.Columns.Add(col);

Чтобы добиться эффекта, который вы хотите получить от поля со списком, которое выглядит как текстовое поле, пока вы его не отредактируете, вы устанавливаете для свойства DataGridViewComboBoxColumn DisplayStyle значение Nothing:

List<string> names = new List<string> { "Joe", "Sally", "Kate" };

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.DataSource = names;
col.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;

dataGridView1.Columns.Add(col);

Вы также можете получить доступ к базовому элементу управления ячейки DataGridView через событие EditingControlShowing.

person David Hall    schedule 19.09.2011
comment
Да, но я хочу, чтобы весь столбец был DataGridViewTextBoxColumn, и пока пользователь не нажмет на ячейку, эта ячейка должна измениться на DataGridViewComboBoxCell. - person Robert; 19.09.2011
comment
Я думал примерно так: akadia.com/services/dotnet_combobox_in_datagrid.html - person Robert; 19.09.2011
comment
@albert, так что вы хотите, чтобы столбец со списком выглядел как текстовое поле, пока оно не будет нажато? - person David Hall; 19.09.2011
comment
Можно ли сделать это поле со списком с редактируемым первым элементом? Как и в случае с comboBoxToolStripItem. - person Robert; 19.09.2011
comment
@albert - да, в событии editcontrolshowing измените базовый элемент управления со списком на стиль DropDown. Это объясняется здесь sommergyll.com/datagridview-usercontrols/ хотя, возможно, стоит поискать больше на этом сайте (думаю, я, возможно, уже отвечал на этот вопрос раньше), и если вы ничего не найдете, задайте вопрос, поскольку хорошо собрать здесь много информации, чтобы помочь будущим людям. - person David Hall; 19.09.2011