MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Как программно в dataGridView сделать поле ComboBox?"
Answer 893210
Как-то так:
string[] countrys = new string[] { "США", "ОАЭ", "ЮАР" }; var oldcol = dataGridView1.Columns[1]; var newcol = new DataGridViewComboBoxColumn(); newcol.HeaderText = oldcol.HeaderText; newcol.Name = oldcol.Name; newcol.DataSource = countrys; newcol.DataPropertyName = oldcol.DataPropertyName; dataGridView1.Columns.RemoveAt(1); dataGridView1.Columns.Insert(1,newcol);
Недостаток: если значение в таблице отсутствует в списке для ComboBox, при каждом нажатии на DataGridView валится ошибка (необходимо обработать событие DataError).
Чтобы ComboBox раскрывался по первому клику, добавьте такой обработчик для события CellClick в DataGridView:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { DataGridViewCell cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]; if (cell is DataGridViewComboBoxCell) { dataGridView1.BeginEdit(false); (dataGridView1.EditingControl as DataGridViewComboBoxEditingControl).DroppedDown = true; } }
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.