Moin Leute.
Ich habe einen Dialog, der ein DataGridView enthält. In diesem sollen Strings editiert werden, die Strings sind in einer DataTable an das DGV gebunden.
Nun kann es vorkommen, dass dort sehr lange Strings editiert werden sollen, dazu rufe ich per Doppelklick auf die Zelle einen Dialog mit einer Multiline-Textbox auf.
Ist ein String vorhanden, ist alles in Ordnung.
Doppelklicke ich auf die letzte Zeile, werden zwei zusätzliche leere Zeilen angehängt:
=>
Ich hab mal ein rudimentäres Projekt (Form mit DataGridView) gemacht, das den Effekt reproduziert. Statt des Dialogs werden einfach die Strings editiert.
Spoiler anzeigen
Frage:
Wie muss ich die zu editierende Zeile behandeln, um das "normale" DGV+DataTable-Verhalten einer befüllten Zeile zu realisieren?
Ich habe einen Dialog, der ein DataGridView enthält. In diesem sollen Strings editiert werden, die Strings sind in einer DataTable an das DGV gebunden.
Nun kann es vorkommen, dass dort sehr lange Strings editiert werden sollen, dazu rufe ich per Doppelklick auf die Zelle einen Dialog mit einer Multiline-Textbox auf.
Ist ein String vorhanden, ist alles in Ordnung.
Doppelklicke ich auf die letzte Zeile, werden zwei zusätzliche leere Zeilen angehängt:
=>
Ich hab mal ein rudimentäres Projekt (Form mit DataGridView) gemacht, das den Effekt reproduziert. Statt des Dialogs werden einfach die Strings editiert.
VB.NET-Quellcode
- Public Class Form1
- Private Table As DataTable
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Me.Table = New DataTable("Messages")
- Me.Table.Columns.Add("Message", GetType(String))
- Me.DataGridView1.DataSource = Table
- End Sub
- Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
- Dim index = e.RowIndex
- Dim msg = String.Empty
- If index < Me.Table.Rows.Count Then
- ' Klick auf eine vorhandene Zeile
- msg = Me.Table.Rows(index)(0).ToString()
- End If
- If index < Me.Table.Rows.Count Then
- ' Klick auf eine vorhandene Zeile
- Me.Table.Rows(index)(0) = msg & " edit" ' Kennung für editiert
- Else
- ' Klick auf die letzte Zeile
- msg = "neue Zeile"
- Dim row = Me.Table.NewRow()
- row(0) = msg
- Me.Table.Rows.Add(row)
- End If
- End Sub
- End Class
Frage:
Wie muss ich die zu editierende Zeile behandeln, um das "normale" DGV+DataTable-Verhalten einer befüllten Zeile zu realisieren?
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!
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!