c# - 取消选择 DataGridView 上的所有行

标签 c# .net winforms datagridview

有人知道如何取消选择 Windows 窗体 DataGridView 控件上的所有行吗?默认情况下,始终选择第一行...
另外,我不想让任何类型的选择,你们知道有什么方法吗?

我已经在这里搜索过但找不到...

任何帮助都会很棒!

编辑: 好的,我找到了另一种取消选择行的方法:在 DataGridViewRow.RowPostPaint() 事件中,使用 Selected 属性取消选择发送事件的行。

private void grid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
    this.gridLogEntries.Rows[e.RowIndex].Selected = false;
}

最佳答案

我认为没有像 DisableSelection = true 这样的简单解决方案。

无论如何,按以下方式处理 SelectionChanged 事件就足够了:

private bool skipEvents;

void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
    if (skipEvents)
        return;

    skipEvents = true;

    // disable cell selection
    foreach (DataGridViewCell cell in this.dataGridView1.SelectedCells)
        cell.Selected = false;
    // disable row selection
    foreach (DataGridViewRow row in this.dataGridView1.SelectedRows)
        row.Selected = false;
    // disable column selection
    foreach (DataGridViewColumn col in this.dataGridView1.SelectedColumns)
        col.Selected = false;

    skipEvents = false;
}

编辑:

我稍微更改了代码以避免递归调用该方法。

关于c# - 取消选择 DataGridView 上的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3707890/

相关文章:

c# - 创建一个使用 CAGradientLayer 作为其层的 UIView 子类

c# - Windows Phone 芒果选择器

c# - 如何让枚举存储每个条目的额外信息

c# - 为什么我的 var 调用不返回 DataListItems

c# - 创建一个方法以返回另一个方法的执行时间

c# - 由于缺少 .net 4.5 框架,多目标 .NET Standard 2.0 和 .NET 4.5 失败

c# - 为什么设置 MaximumSize 会破坏表格布局?

c# - 应用程序不会以 0 个线程退出

c# - 如何遍历 Windows 窗体控件

c# - 使用 ObjectListView 控件中的 TreeView 列表