C# 如何限制可以在DataGridView中选择的行数
我有一个数据网格视图,在C#中有一个MultiSelect=True 我想将同时选择的行的最大数量限制为2,以便用户可以同时选择一行或两行。我怎样才能做到这一点 没有类似BeforeSelectedRowsChanged或ValidatingSelectedRows的事件 我的DataGridView也是只读的 **编辑**C# 如何限制可以在DataGridView中选择的行数,c#,datagridview,C#,Datagridview,我有一个数据网格视图,在C#中有一个MultiSelect=True 我想将同时选择的行的最大数量限制为2,以便用户可以同时选择一行或两行。我怎样才能做到这一点 没有类似BeforeSelectedRowsChanged或ValidatingSelectedRows的事件 我的DataGridView也是只读的 **编辑** 我的选择模式是全行选择在SelectionChanged事件中,您可以执行以下操作: private void dataGridView1_SelectionChanged
我的选择模式是全行选择在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?如果您选择的是包含多个列的整行,那么您是对的,它将不起作用。