BeginEdit im Datagridview bei Spalten mit unterschiedlichen Formatierungen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    BeginEdit im Datagridview bei Spalten mit unterschiedlichen Formatierungen

    Hallo Zusammen,

    ich habe eine Windowsform mit einem Datagrid. Bei Doppelklick auf eine Zelle wird diese in den Bearbeiten-Modus versetzt. Klappt soweit wunderbar.

    VB.NET-Quellcode

    1. Private Sub Grid_DoubleClick(sender As Object, e As EventArgs) Handles Grid.DoubleClick
    2. Dim P As Point = Grid.PointToClient(Cursor.Position)
    3. Dim Hit As DataGridView.HitTestInfo = Grid.HitTest(P.X, P.Y)
    4. Grid.ReadOnly = False
    5. If Hit.Type = DataGridViewHitTestType.Cell Then
    6. Grid.CurrentCell = Grid(Hit.ColumnIndex, Hit.RowIndex)
    7. Grid.CurrentCell.Selected = True
    8. Grid.BeginEdit(True)
    9. End If
    10. End Sub


    Nun habe ich zwei Spalten im Grid fett hervorgehoben.

    VB.NET-Quellcode

    1. Dim Font As New Font(Grid.DefaultCellStyle.Font.FontFamily, 9, FontStyle.Bold)
    2. Try
    3. Grid.Columns("Telefon").DefaultCellStyle.Font = Font
    4. Grid.Columns("api").DefaultCellStyle.Font = Font
    5. Finally
    6. Font.Dispose()
    7. End Try

    Klicke ich diese nun doppelt an bekomme ich eine Fehlermeldung (siehe Anhang).
    Der Zusammenhang wird mir nicht ganz klar. ?(
    Bilder
    • Fehler.jpg

      35,54 kB, 545×311, 133 mal angesehen
    @Jebediah
    Dein Gedanke war richtig, die Umsetzung nicht. Mach es so:

    VB.NET-Quellcode

    1. If Grid.Columns("Telefon").DefaultCellStyle.Font IsNot Nothing Then
    2. Grid.Columns("Telefon").DefaultCellStyle.Font.Dispose()
    3. End If
    4. Grid.Columns("Telefon").DefaultCellStyle.Font = Font
    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!

    Jebediah schrieb:

    der Gedanke war ... wenn der Versuch scheitert...
    Sowas würde man nicht mit Try...Finally formulieren, sondern mit Try...Catch.
    Aber bitte tu das nicht, denn TryCatch ist an dieser Stelle völlig unangebracht. Mach den Try-Block einfach weg, das ist das vernünftigste, und dann weißt du am ehesten, was du tust.
    TryCatch ist ein heißes Eisen