我有第一列的Datagridview作为组合框。如何限制用户只从列表中选择一个项目。因此,如果在第一行中用户已经选择了“Banana”,则在第二行中不应该允许香蕉(可能显示一个消息框,说“香蕉已经存在”。
感谢。
答案 0 :(得分:1)
以下是使用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
事件离开当前行时,另一个选项是执行类似操作。