DGV Cell Ausgabe in TextBox

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von guccini.

    DGV Cell Ausgabe in TextBox

    Hi zusammen , habe folgendes Problem: Versuche eine Zeile aus Datagridview zu ermitteln,, sobald in den 32 spalte eine 1, 2 oder nicht drin steht soll die Erste Spalte in Textbox1 angezeigt werden. was mache ich falsch?

    VB.NET-Quellcode

    1. Public Sub test()
    2. For x As Integer = 2 To 32
    3. If DataGridView1.Rows(0).Cells(x).Value.ToString().Contains("1") Then
    4. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value
    5. TextBox1.ForeColor = Color.White
    6. TextBox1.BackColor = Color.Red
    7. ElseIf DataGridView1.Rows(0).Cells(x).Value.ToString().Contains("2") Then
    8. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value
    9. TextBox1.ForeColor = Color.White
    10. TextBox1.BackColor = Color.Red
    11. ElseIf DataGridView1.Rows(0).Cells(x).Value.ToString = String.Empty Then
    12. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value
    13. TextBox1.ForeColor = Color.Black
    14. TextBox1.BackColor = Color.White
    15. End If
    16. Next
    17. End Sub
    Hallo guccini!

    So klappts:

    VB.NET-Quellcode

    1. For x As Integer = 2 To 32
    2. If DataGridView1.Rows(0).Cells(x).Value Is Nothing Then
    3. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    4. TextBox1.ForeColor = Color.Black
    5. TextBox1.BackColor = Color.White
    6. Exit For
    7. Else
    8. If DataGridView1.Rows(0).Cells(x).Value.ToString.Contains("1") Then
    9. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    10. TextBox1.ForeColor = Color.White
    11. TextBox1.BackColor = Color.Red
    12. Exit For
    13. ElseIf DataGridView1.Rows(0).Cells(x).Value.tostring.Contains("2") Then
    14. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    15. TextBox1.ForeColor = Color.White
    16. TextBox1.BackColor = Color.Red
    17. Exit For
    18. End If
    19. End If
    20. Next


    Wenn du die Zellen durchläufst und nach dem Value fragst, obwohl da nichts drin steht, wird dies einen Fehler produzieren. Deshalb frag zuerst nach leeren Zellen (Value is nothing) und erst wenn das nicht der Fall ist, überprüfe, ob der Wert eine 1 oder eine 2 ist.

    Viele Grüße

    LaBuNi
    Alle sagten: Das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LABUNI“ ()

    VB1963 schrieb:

    Wird da von dazengebundenen DGV's geredet?


    Ist nicht Datengebunden
    danke labuni hab noch das hinzugefügt ,sonst bleibt die textbox komplett leer

    VB.NET-Quellcode

    1. Public Sub test()
    2. Me.DataGridView1.Refresh()
    3. For x As Integer = 2 To 32
    4. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    5. TextBox1.ForeColor = Color.Black
    6. TextBox1.BackColor = Color.White
    7. If DataGridView1.Rows(0).Cells(x).Value Is Nothing Then
    8. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    9. TextBox1.ForeColor = Color.Black
    10. TextBox1.BackColor = Color.White
    11. Exit For
    12. Else
    13. If DataGridView1.Rows(0).Cells(x).Value.ToString.Contains("1") Then
    14. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    15. TextBox1.ForeColor = Color.White
    16. TextBox1.BackColor = Color.Red
    17. Exit For
    18. ElseIf DataGridView1.Rows(0).Cells(x).Value.ToString.Contains("2") Then
    19. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    20. TextBox1.ForeColor = Color.White
    21. TextBox1.BackColor = Color.Red
    22. Exit For
    23. End If
    24. End If
    25. Next
    26. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „guccini“ ()

    Hallo guccini!

    Ok, ich dachte die Textbox sollte nur reagieren, falls eine Zelle leer oder den Wert 1 oder 2 hat.

    Eine kleine Anmerkung habe ich noch zu Deinem neuen Code


    VB.NET-Quellcode

    1. Public Sub test()
    2. Me.DataGridView1.Refresh()
    3. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    4. TextBox1.ForeColor = Color.Black
    5. TextBox1.BackColor = Color.White
    6. For x As Integer = 2 To 32
    7. If DataGridView1.Rows(0).Cells(x).Value Is Nothing Then
    8. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    9. TextBox1.ForeColor = Color.Black
    10. TextBox1.BackColor = Color.White
    11. Exit For
    12. Else
    13. If DataGridView1.Rows(0).Cells(x).Value.ToString.Contains("1") Then
    14. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    15. TextBox1.ForeColor = Color.White
    16. TextBox1.BackColor = Color.Red
    17. Exit For
    18. ElseIf DataGridView1.Rows(0).Cells(x).Value.ToString.Contains("2") Then
    19. TextBox1.Text = DataGridView1.Rows(0).Cells(1).Value.ToString
    20. TextBox1.ForeColor = Color.White
    21. TextBox1.BackColor = Color.Red
    22. Exit For
    23. End If
    24. End If
    25. Next
    26. End Sub


    Die drei Zeilen sollten besser außerhalb der Schleife stehen, sonst werden sie unnötigerweise bei jedem Durchlauf (bis zu 30 mal) immer wieder neu ausgeführt, ohne dass etwas anderes dabei herauskommen könnte.

    Viele Grüße

    LaBuNi
    Alle sagten: Das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.