我是C#的新手,我真的被卡住了。我会尽量简明扼要。
我在DataGridView中有一些ComboBox(在同一列中),我希望用户能够输入ComboBox。我得到了半工作......
*问题1: 当我输入它时,即使我输入的内容被添加到下拉列表中的选择列表中,ComboBox也会变为空白,我必须重新选择刚刚输入的值。我怎样才能使我输入的值保留为选择而不是空白。
*问题2: 有没有办法让某些ComboBox在同一列中不可编辑?我的代码似乎使我的所有ComboBox用户都可以编辑。如何制作一些ComboBox例外?
如果你能提供帮助,请提前致谢!
以下是代码:
private void dm_dgview_add_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl))
{
DataGridViewComboBoxEditingControl combo = e.Control as DataGridViewComboBoxEditingControl;
combo.DropDownStyle = ComboBoxStyle.DropDown;
combo.TextChanged += new EventHandler(combo_TextChanged);
}
}
void combo_TextChanged(object sender, EventArgs e)
{
dm_dgview_add.NotifyCurrentCellDirty(true);
}
private void dm_dgview_add_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
DataGridViewComboBoxCell cell = dm_dgview_add.CurrentCell as DataGridViewComboBoxCell;
if (cell != null && e.ColumnIndex == dm_dgview_add.Columns[1].Index)
{
if (!cell.Items.Contains(e.FormattedValue) && e.FormattedValue != null)
{
cell.Items.Add(e.FormattedValue);
}
}
}
请帮助,我非常感谢!
答案 0 :(得分:0)
您是否需要在单元格验证事件中设置cell.Items.SelectedItem = e.FormattedValue?