Hallo an alle,
ich habe folgende Herausforderung und bekomme sie aktuell nicht gelöst und hoffe Ihr könnt mir hier ein wenig weiterhelfen.
Folgendes möchte ich durchführen:
Ein DataGridView Table wird mit Inhalt gefüllt und besteht z. B. aus zwei Spalten und einer Zeile (um es hier einfach zu machen)
Erster Inhalt ist eine Zahl für den Wert einer Längenangabe = 10
Zweiter Inhalt ist Beispieltext, der jetzt nur ca. 8 Zeichen lang ist
Ein Text Feld ist mit auf dem Formular und soll die aktuelle Textlänge vom zweiten DGV „Zweiter Inhalt“ anzeigen.
Ich möchte jetzt die Textlänge bei der Eingabe im DGV permanent beim schreiben auslesen (im Textfeld ändern) und überwachen (wenn Textlänge aus Zelle 2 <> Wert aus Zelle 1, dann Cell Back Color = red
Ich setzte aktuell den Event „DataGridView1_EditingControlShowing“ ein und der funktioniert auch schon, nur immer eine Eingabe zu spät und die Len() Angabe ist somit nicht korrekt.
Wo liegt mein Fehler?
Danke für Eure Hilfe...
Hier mein aktueller Code:
ich habe folgende Herausforderung und bekomme sie aktuell nicht gelöst und hoffe Ihr könnt mir hier ein wenig weiterhelfen.
Folgendes möchte ich durchführen:
Ein DataGridView Table wird mit Inhalt gefüllt und besteht z. B. aus zwei Spalten und einer Zeile (um es hier einfach zu machen)
Erster Inhalt ist eine Zahl für den Wert einer Längenangabe = 10
Zweiter Inhalt ist Beispieltext, der jetzt nur ca. 8 Zeichen lang ist
Ein Text Feld ist mit auf dem Formular und soll die aktuelle Textlänge vom zweiten DGV „Zweiter Inhalt“ anzeigen.
Ich möchte jetzt die Textlänge bei der Eingabe im DGV permanent beim schreiben auslesen (im Textfeld ändern) und überwachen (wenn Textlänge aus Zelle 2 <> Wert aus Zelle 1, dann Cell Back Color = red
Ich setzte aktuell den Event „DataGridView1_EditingControlShowing“ ein und der funktioniert auch schon, nur immer eine Eingabe zu spät und die Len() Angabe ist somit nicht korrekt.
Wo liegt mein Fehler?
Danke für Eure Hilfe...
Hier mein aktueller Code:
VB.NET-Quellcode
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- With DataGridView1
- .AllowUserToAddRows = False ' User kann keine Zeilen hinzuf.
- .RowHeadersVisible = False ' Überheader ausblenden
- .ColumnHeadersVisible = True
- .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
- .Columns.Clear()
- .Columns.Add("Spalte1", "Len")
- .Columns.Add("Spalte2", "Field")
- End With
- Dim vRow As String() = New String() {"10", "Hier ist"}
- DataGridView1.Rows.Add(vRow)
- DataGridView1.Show()
- DataGridView1.CurrentCell = Nothing
- End Sub
VB.NET-Quellcode
- Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
- If DataGridView1.CurrentCell.ColumnIndex = 1 And Not e.Control Is Nothing Then
- Dim tb As TextBox = CType(e.Control, TextBox)
- Label_len.Text = Len(tb.Text)
- AddHandler tb.KeyDown, AddressOf TextBox_KeyDown
- End If
- End Sub
VB.NET-Quellcode
- Private Sub TextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
- Dim tb As String = sender.Text
- Label_len.Text = Len(tb)
- If DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value = Len(tb) Then
- DataGridView1.Rows(DataGridView1.CurrentRow.Index).DefaultCellStyle.BackColor = Color.White
- Else
- DataGridView1.Rows(DataGridView1.CurrentRow.Index).DefaultCellStyle.BackColor = Color.Red
- End If
- End Sub