我想禁用datagridview中某些行的选择.
必须可以删除winform中显示的datagridview中的一个或多个datagridview行的select属性.目标是用户无法选择某些行.(视情况而定)
Thankx,
如果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()指向新类.