.net - 禁用数据 GridView 中的行选择

标签 .net winforms datagridview user-interface

我想禁用 datagridview 中某些行的选择。

必须可以在 winform 中显示的 datagridview 中删除一个或多个 datagridview 行的 select 属性。目标是用户不能选择某些行。 (视情况而定)

谢谢,

最佳答案

如果SelectionMode 是FullRowSelect,那么您需要为该DataGridView 覆盖SetSelectedRowCore,而不是为您不想选择的行调用基本的SetSelectedRowCore。

如果 SelectionMode 不是 FullRowSelect,您将需要额外覆盖 SetSelectedCellCore(并且不为您不想选择的行调用基础 SetSelectedCellCore),因为 SetSelectedRowCore 只会在您单击行标题而不是单个单元格时启动。

下面是一个例子:

public class MyDataGridView : DataGridView
{
    protected override void SetSelectedRowCore(int rowIndex, bool selected)
    {
        if (selected && WantRowSelection(rowIndex))
        {
            base.SetSelectedRowCore(rowIndex, selected);
        }
     }

     protected virtual void SetSelectedCellCore(int columnIndex, int rowIndex, bool selected)
     {
         if (selected && WantRowSelection(rowIndex))
         {
            base.SetSelectedRowCore(rowIndex, selected);
          }
     }

     bool WantRowSelection(int rowIndex)
     {
        //return true if you want the row to be selectable, false otherwise
     }
}

如果您使用的是 WinForms,请打开相关表单的 Designer.cs,并将您的 DataGridView 实例的声明更改为使用这个新类而不是 DataGridView,并替换 this.blahblahblah = new System.Windows.Forms。 DataGridView() 指向新类。

关于.net - 禁用数据 GridView 中的行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71423/

相关文章:

C# DataGridView 右键单击​​到 ContextMenu 单击检索单元格值

c# - WPF 控件可见性

c# - 如何检查给定进程已创建到 Internet 的哪些连接

c# - RichtextBox 中的颜色特定单词

c# - 网页浏览器 : IDropTarget

.net - 如何取消选择 DataGridView 控件中的所有选定行?

.net - Redis Cache 如何与 High Availability 和 Sentinel 协同工作?

.net - 语法高亮 : rich text box control for . NET

winforms - 如何覆盖 UserControl 类以绘制自定义边框?

c# - 使用明细表中的外键从 C# 将数据插入 SQL Server 2005 中的主/明细表