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

C# 如何限制可以在DataGridView中选择的行数,c#,datagridview,C#,Datagridview,我有一个数据网格视图,在C#中有一个MultiSelect=True 我想将同时选择的行的最大数量限制为2,以便用户可以同时选择一行或两行。我怎样才能做到这一点 没有类似BeforeSelectedRowsChanged或ValidatingSelectedRows的事件 我的DataGridView也是只读的 **编辑** 我的选择模式是全行选择在SelectionChanged事件中,您可以执行以下操作: private void dataGridView1_SelectionChanged

我有一个数据网格视图,在C#中有一个MultiSelect=True

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

没有类似BeforeSelectedRowsChanged或ValidatingSelectedRows的事件

我的DataGridView也是只读的

**编辑**
我的选择模式是全行选择在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;
    }
}

您可以尝试覆盖SetSelectedRowCore,通过向所选条件添加新限制来调用base

protected virtual void SetSelectedRowCore(int rowIndex,bool selected   )
{
    base(rowIndex, selected && currentSelection < allowedSelectionCount);
}
protectedvirtualvoid SetSelectedRowCore(int-rowIndex,bool-selected)
{
基本(行索引、选定项和当前选择项

这始终保留最后选择的两行

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;

            }
        }
    }
private void dataGridView1\u选择已更改(对象发送方,事件参数e)
{
如果(dataGridView1.SelectedRows.Count>2)
{
for(int i=2;i
不幸的是。添加上述代码后,它不允许我选择任何行。根据您的SelectionMode,您可能需要使用SelectedRows而不是SelectedCells?如果您选择的是包含多个列的整行,那么您是对的,它将不起作用。