禁用按下CTRL时选择的DataGridView行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了禁用按下CTRL时选择的DataGridView行相关的知识,希望对你有一定的参考价值。

如果按下CTRL键并单击选定的DataGridViewRow,则取消选择该行。我怎么能阻止这个?

答案

这是使用Ctrl进行多选的标准行为。为什么要破坏用户的预期界面?你可以通过检测选择变化来破解它(我会看......)

(编辑) - 是的,如果你勾住SelectionChanged似乎工作,例如:

DataGridViewRow[] lastSelectedRows = new DataGridViewRow[0];
void grid_SelectionChanged(object sender, System.EventArgs e) {
    if ((Control.ModifierKeys & Keys.Control) == Keys.Control) {
        foreach (DataGridViewRow row in lastSelectedRows) {
            if (!row.Selected) row.Selected = true;
        }            
    }
    DataGridViewSelectedRowCollection selected = grid.SelectedRows;
    lastSelectedRows = new DataGridViewRow[selected.Count];
    selected.CopyTo(lastSelectedRows, 0);
}

以上是关于禁用按下CTRL时选择的DataGridView行的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用在 DataGridView 中选择的能力?

隐藏/禁用 DataGridView 列/行调整大小行

Datagridview Control键+鼠标点击取消选中行

如何禁用 VS datagridview 中的第一个自动选择?

在鼠标单击时保持多选并执行更多功能

如何在 DataGridView 中禁用或隐藏按钮