Hey,
ich habe eine Datagridview mit 3 Spalten.
Ich benutze folgenden Code, um aus Excel Inhalte in diese Datagridview einzutragen:
Das klappt auch.
Nun aber folgende Situation:
Ich möchte nun auch aus Excel folgendes kopieren und einfügen können:
Und das soll hier erscheinen:
Mit "meiner" Methode wird ja zwangsweise eine neue Row hinzugefügt, nun möchte ich aber ja in der existierenden Row bloß etwas hinzufügen, wisst ihr was ich meine?
Ich habe folgende Methode geschrieben:
Das klappt auch, das Problem ist aber, dass das erstens nicht effektiv ist, zweitens muss dann das Sorting deaktiviert sein, drittens muss Multiselect deaktiviert sein.
Ich klicke also die erste Zeile an und er fügt mir das dann fortlaufend ein, aber gibts da keine besseren wege?
Danke.
Gruß
EDIT: Okay, das Problem mit dem Sorting ist behoben:
Somit macht es das schon ganz passabel. Gibt es trotzdem bessere Möglichkeiten?
ich habe eine Datagridview mit 3 Spalten.
Ich benutze folgenden Code, um aus Excel Inhalte in diese Datagridview einzutragen:
VB.NET-Quellcode
- Private Sub DataGridView1_KeyDown(sender As Object, e As KeyEventArgs) Handles DataGridView1.KeyDown
- If e.Control AndAlso e.KeyCode = Keys.V Then
- For Each line As String In Clipboard.GetText.Split(vbNewLine)
- If Not line.Trim.ToString = "" Then
- Dim item() As String = line.Split(vbTab(0))
- table.Rows.Add(item)
- End If
- Next
- DataGridView1.DataSource = table
- End If
- End Sub
Das klappt auch.
Nun aber folgende Situation:
Ich möchte nun auch aus Excel folgendes kopieren und einfügen können:
Und das soll hier erscheinen:
Mit "meiner" Methode wird ja zwangsweise eine neue Row hinzugefügt, nun möchte ich aber ja in der existierenden Row bloß etwas hinzufügen, wisst ihr was ich meine?
Ich habe folgende Methode geschrieben:
VB.NET-Quellcode
- Private Sub DataGridView1_KeyDown(sender As Object, e As KeyEventArgs) Handles DataGridView1.KeyDown
- If e.Control AndAlso e.KeyCode = Keys.V Then
- Dim Counter As Integer = DataGridView1.CurrentRow.Index - 1
- For Each line As String In Clipboard.GetText.Split(vbNewLine)
- If Not line.Trim.ToString = "" Then
- Counter = Counter + 1
- Dim item() As String = line.Split(vbTab(0))
- If Not IsDBNull(DataGridView1.Rows(Counter).Cells(0).Value) Then 'Falls Erste Zelle nicht leer
- If String.IsNullOrEmpty((DataGridView1.Rows(Counter).Cells(0).Value)) Then
- Else
- If String.IsNullOrEmpty(item(0)) = False Then
- DataGridView1.Rows(Counter).Cells(1).Value = item(0) 'Zelle 2 Befüllen
- End If
- Try
- If String.IsNullOrEmpty(item(1)) = False Then
- DataGridView1.Rows(Counter).Cells(2).Value = item(1) 'Zelle 3 Befüllen
- End If
- Catch
- End Try
- End If
- Else 'Falls leer, dann einfach Row hinzufügen
- table.Rows.Add(item)
- End If
- End If
- Next
- DataGridView1.DataSource = table
- End If
- End Sub
Das klappt auch, das Problem ist aber, dass das erstens nicht effektiv ist, zweitens muss dann das Sorting deaktiviert sein, drittens muss Multiselect deaktiviert sein.
Ich klicke also die erste Zeile an und er fügt mir das dann fortlaufend ein, aber gibts da keine besseren wege?
Danke.
Gruß
EDIT: Okay, das Problem mit dem Sorting ist behoben:
Somit macht es das schon ganz passabel. Gibt es trotzdem bessere Möglichkeiten?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xored“ ()