我希望禁止选择的某些行一个条件.

它必须尽可能的去除选择性的一个或更多条件中的行条件下所示一个winform.我们的目标是,用户不能选择某些行。(根据一个条件)

Thankx,

有帮助吗?

解决方案

如果SelectionMode是FullRowSelect,然后你会需要复盖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
     }
}

如果你不用它,打开你的设计师。cs对有关的形式,和改变声明的条件下实例中使用这类新的而不是条件,并且还代替这一点。blahblahblah=的新系统。窗户。形式。条件()来指新类。

其他提示

Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
        dgvSomeDataGridView.ClearSelection()
End Sub
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top