我想禁用数据网格视图中某些行的选择。
必须可以删除winform中显示的datagridview中的一个或多个datagridview行的select属性。目标是用户无法选择某些行。 (取决于条件)
Thankx,
答案 0 :(得分: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
}
}
如果您正在使用WinForms,请打开您的designer.cs以获取相关表单,并更改DataGridView实例的声明以使用此新类而不是DataGridView,并替换this.blahblahblah = new System.Windows .Forms.DataGridView()指向新类。
答案 1 :(得分:-1)
Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
dgvSomeDataGridView.ClearSelection()
End Sub