Frage

Ich mag die Auswahl bestimmter Zeilen in einem Datagridview deaktivieren.

Es muss möglich sein, die ausgewählte Eigenschaft für eine oder mehr Zeilen in einem Datagridview Datagridview in einem winform gezeigt zu entfernen. Das Ziel ist, dass der Benutzer nicht auf bestimmte Zeilen auswählen kann. (Abhängig von einer Bedingung)

Thankx,

War es hilfreich?

Lösung

Wenn selection FullRowSelect ist, dann werden Sie SetSelectedRowCore für das Datagridview außer Kraft setzen müssen, und nicht rufen Sie die Basis SetSelectedRowCore für Zeilen, die Sie ausgewählt nicht wollen.

Wenn selection nicht FullRowSelect ist, sollten Sie zusätzlich SetSelectedCellCore außer Kraft zu setzen (und nicht nennen die Basis SetSelectedCellCore für Zeilen, die Sie nicht ausgewählt werden sollen), als SetSelectedRowCore nur in kickt, wenn Sie den Zeilenkopf klicken und nicht eine individuelle Zelle.

Hier ist ein Beispiel:

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
     }
}

Wenn Sie WinForms verwenden, knacken Ihre designer.cs für das entsprechende Formular öffnen und die Deklaration der Datagridview-Instanz ändern, um diese neue Klasse verwenden anstelle von Datagridview, und ersetzt auch die this.blahblahblah = new System.Windows .Forms.DataGridView (), um die neue Klasse zu zeigen.

Andere Tipps

Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
        dgvSomeDataGridView.ClearSelection()
End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top