我在C#中有一个带有 MultiSelect = True 的 DataGridView 。
我想将同时选中的行的最大数量限制为2,这样用户可以同时只选择一行或两行。我怎么能做到这一点?
没有像BeforeSelectedRowsChanged或ValidatingSelectedRows这样的事件。
我的DataGridView也是Readonly。
**编辑** 我的SelectionMode是 FullRowSelect
答案 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);
}