我想禁用 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/