我有第一列作为组合框的 Datagridview。如何限制用户从列表中仅选择一项。因此,如果在第一行中用户已经选择了“香蕉”,则在第二行中不应允许香蕉(可能会显示一个消息框,说“香蕉已经存在”。
谢谢。
我有第一列作为组合框的 Datagridview。如何限制用户从列表中仅选择一项。因此,如果在第一行中用户已经选择了“香蕉”,则在第二行中不应允许香蕉(可能会显示一个消息框,说“香蕉已经存在”。
谢谢。
这是使用CellValidating
事件的简单解决方案:
void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == dataGridView1.Columns["MyCombo"].Index)
{
var query = from DataGridViewRow row in dataGridView1.Rows
where row.Cells[e.ColumnIndex].Value != null && row.Cells[e.ColumnIndex].Value.ToString() == e.FormattedValue.ToString()
where row.Index != e.RowIndex
select row;
if (query.Any())
{
MessageBox.Show(string.Format("{0} already exists", e.FormattedValue.ToString()));
e.Cancel = true;
}
}
}
当用户试图离开包含组合框的单元格时触发此事件 - 另一种选择是在用户使用RowValidating
事件离开当前行时执行类似的操作。