0

我有第一列作为组合框的 Datagridview。如何限制用户从列表中仅选择一项。因此,如果在第一行中用户已经选择了“香蕉”,则在第二行中不应允许香蕉(可能会显示一个消息框,说“香蕉已经存在”。

谢谢。

4

1 回答 1

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事件离开当前行时执行类似的操作。

于 2012-06-08T12:45:20.707 回答