C# 在DataGridView中是否可以有一列作为组合框,允许用户输入新值?
我知道,在正常的C# 在DataGridView中是否可以有一列作为组合框,允许用户输入新值?,c#,winforms,datagridview,C#,Winforms,Datagridview,我知道,在正常的组合框中,如果平面样式是标准,用户将能够键入一个不在项目列表中的值。但是如果DataGridView中的组合框是标准的,它将不允许我键入新值。是否可以在DataGridView中的列中实现此功能?在DataGridView中,您可以添加DataGridViewComboBoxColumn类型的列。它的DisplayStyle和/或FlatStyle取决于当前行状态。我认为,当您添加新行(编辑模式)时,您可以向其中添加值 参考资料: 您可能想看看DataRepeater控件的使用。
组合框中
,如果平面样式
是标准
,用户将能够键入一个不在项目
列表中的值。但是如果DataGridView
中的组合框是标准的
,它将不允许我键入新值。是否可以在DataGridView
中的列中实现此功能?在DataGridView中,您可以添加DataGridViewComboBoxColumn
类型的列。它的DisplayStyle
和/或FlatStyle
取决于当前行状态。我认为,当您添加新行(编辑模式)时,您可以向其中添加值
参考资料:
您可能想看看DataRepeater控件的使用。DataGridView控件似乎是为查看数据而设计的。如果您希望用户控制数据,那么DataRepeater可能就是您想要的方式
private void dataGridView2_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
try
{
switch (dataGrid_ItemsList.Columns[dataGrid_ItemsList.SelectedCells[0].ColumnIndex].HeaderText)
{
case "Batch":
if (e.Control is ComboBox)
{
ComboBox _with1 = (ComboBox)e.Control;
_with1.DropDownStyle = ComboBoxStyle.DropDown;
_with1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
_with1.AutoCompleteSource = AutoCompleteSource.CustomSource;
_with1.AutoCompleteCustomSource = BatchList;
//_with1.Validating -= HandleComboBoxValidating;
//_with1.Validating += HandleComboBoxValidating;
_with1.Validating += (ss, ee) =>
{
if (!_with1.Items.Contains(_with1.Text))
{
var comboColumn = dataGrid_ItemsList.CurrentCell as DataGridViewComboBoxCell;
_with1.Items.Add(_with1.Text);
_with1.Text = _with1.Text;
comboColumn.Items.Add(_with1.Text);
this.dataGrid_ItemsList.CurrentCell.Value = _with1.Text;
}
};
}
break;
}
}
catch (Exception ex)
{
_CommonClasses._Cls_ExceptionsHandler.HandleException(ex,false);
}
}