我想禁用数据网格视图中某些行的选择。
必须可以删除 winform 中显示的 datagridview 中一个或多个 datagridview 行的 select 属性。目标是用户不能选择某些行。(根据条件)
谢谢,
我想禁用数据网格视图中某些行的选择。
必须可以删除 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() 指向新类。
Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
dgvSomeDataGridView.ClearSelection()
End Sub