Я предлагаю вам альтернативный способ установки значения по умолчанию / начального значения DataGridViewComboBoxColumn
, используя пользовательский CellTemplate
.
Предполагая, что (из показанного изображения) вашСтолбец ComboBox равен Column[2]
, вы можете присвоить ему этот пользовательский CellTemplate
, который можно инициализировать значением по умолчанию:
(Здесь значение по умолчанию имеет тип String
, но вы можете сделать его универсальным, если необходимо)
public class ComboBoxCell : DataGridViewComboBoxCell
{
private static string psDefaultValue;
public ComboBoxCell()
: base() { this.Value = psDefaultValue; }
public void DefaultValue(string Value)
{
psDefaultValue = Value;
this.Value = Value;
}
public override Type ValueType => typeof(String);
public override object DefaultNewRowValue => psDefaultValue;
}
При инициализации DataGridView
назначьте пользовательский CellTemplate
для DataGridViewComboBoxColumn
:
ComboBoxCell ComboBoxCellTemplate = new ComboBoxCell();
dataGridView1.Columns[2].CellTemplate = ComboBoxCellTemplate;
Затем, после заполненияВ списке элементов ComboBox определите значение по умолчанию и назначьте его с помощью пользовательского метода DefaultValue()
CellTemplate
:
((DataGridViewComboBoxColumn)dataGridView1
.Columns[2])
.Items.AddRange(new string[] { "Item1", "Item2", "Item3" });
((ComboBoxCell)dataGridView1.Columns[2]
.CellTemplate)
.DefaultValue(((DataGridViewComboBoxColumn)dataGridView1
.Columns[2]).Items[0].ToString());
После этого определите источник данных DatagridView
.Таким образом, для всех новых строк DataGridVieewComboBoxColumn
представит значение по умолчанию, в данном случае первый элемент ComboBox.