如何限制可在DataGridView中选择的行数

时间:2014-05-21 13:51:29

标签: c# datagridview

我在C#中有一个带有 MultiSelect = True DataGridView

我想将同时选中的行的最大数量限制为2,这样用户可以同时只选择一行或两行。我怎么能做到这一点?

没有像BeforeSelectedRowsChanged或ValidatingSelectedRows这样的事件。

我的DataGridView也是Readonly。

**编辑** 我的SelectionMode是 FullRowSelect

3 个答案:

答案 0 :(得分:3)

在SelectionChanged事件上,您可以执行以下操作:

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
    if (dataGridView1.SelectedCells.Count > 2)
    {
      dataGridView1.SelectedCells[0].Selected = false;
    }
}

这将在选择两个后阻止/撤消选择任何更多的单元格。

对于整行:

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
    if (dataGridView1.SelectedRows.Count > 2)
    {
      dataGridView1.SelectedRows[0].Selected = false;
    }
}

答案 1 :(得分:1)

这总是留下选定的2个最后选定的行

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
    {
        if (dataGridView1.SelectedRows.Count > 2)
        {
            for (int i = 2; i < dataGridView1.SelectedRows.Count; i++)
            {
                dataGridView1.SelectedRows[i].Selected = false;

            }
        }
    }

答案 2 :(得分:0)

您可以尝试重写SetSelectedRowCore,通过将新限制添加到所选条件来调用基础。

protected virtual void SetSelectedRowCore(int rowIndex,bool selected   )
{
    base(rowIndex, selected && currentSelection < allowedSelectionCount);
}

SetSelectedRowCore