Nik*_*iki 12 .net user-interface datagridview winforms
我想禁用datagridview中某些行的选择.
必须可以删除winform中显示的datagridview中的一个或多个datagridview行的select属性.目标是用户无法选择某些行.(视情况而定)
Thankx,
sze*_*vvy 16
如果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
}
}
Run Code Online (Sandbox Code Playgroud)
如果您正在使用WinForms,请打开您的designer.cs以获取相关表单,并更改DataGridView实例的声明以使用此新类而不是DataGridView,并替换this.blahblahblah = new System.Windows.Forms. DataGridView()指向新类.