DataGridView Headerzeilen nicht clickable machen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von mox.

    DataGridView Headerzeilen nicht clickable machen

    Hallo an Alle!

    Ich arbeite derzeit an einem kleinen Projekt in VB.NET, bei dem unter anderem auch eine DataTable in ein DataGridview (DGV) geladen wird.
    Dann verändern sich bei jedem SelectionChanged im DGV diverse Komponenten.

    Einziges Problem:
    Wenn man beim Klicken auf die Headerzeile kommt, steigt das Programm aus.

    Soweit ich das beurteilen kann, steigt das Programm dann aus, wenn der Index der CurrentRow ausgelesen wird. (Da RowIndex nullbasierend und Header ja quasi noch eine Stufe weiter unten ist)

    jetzt stellt sich mir die Frage, wie ich es umgehen kann, dass HeaderClick zum Ereignis SelectionChanged mit dazu gehört oder dieses Problem anders umgehen kann?
    Hat da Jemand eine Idee?


    Danke schon im Vorraus :)

    MfG Acr0most :thumbup:
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Willkommen im Forum. :?:

    Acr0most schrieb:

    steigt das Programm dann aus
    Willst Du Ursachen oder Symptome bekämpfen?
    Poste bitte mal eine vollständige Problembeschreibung, ggf. mit qualifizierter Fehlermeldung und dem dazugehörigen Code.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    VB.NET-Quellcode

    1. Private Sub DataGridView1_SelectionChanged(sender As Object, e As System.EventArgs) Handles DataGridView1.SelectionChanged 'VISO
    2. Dim nRow As Integer = DataGridView1.CurrentRow.Index 'Hier steigt er aus
    3. Dim nRowMax As Integer
    4. If datagridchange <> 0 And DataGridView1.SelectedCells.Count = 1 Then
    5. nRowMax = DataGridView1.Rows.Count - 1
    6. ...
    7. End Sub


    Fehlermeldung:

    NullReferenceException wurde nicht von Benutzercode behandelt.

    In System.NullReferenceException ist eine Ausnahme vom Typ "SD-CARD COPY.exe" aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet.

    Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Ist das in Ordnung so oder brauchst noch mehr? :)
    _________
    Also am liebsten wäre mir, wenn ich die Ursache (also das Event durch Klicken auf Header) unterbinden kann.
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:

    Acr0most schrieb:

    in Ordnung
    Wahrscheinlich hast Du etwas ent-selektiert.
    Frag ab, ob DataGridView1.CurrentRow ühaupt eine Instanz hat:

    VB.NET-Quellcode

    1. If DataGridView1.CurrentRow IsNot Nothing Then
    2. ' dann was tun
    3. End If
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vielen Dank @RodFromGermany
    Damit funktioniert es einwandfrei.

    MfG Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup: