PictureBox-Bild je nach TextBox-Text

  • VB.NET

Es gibt 38 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-programmer.

    PictureBox-Bild je nach TextBox-Text

    Hallo!

    Ich habe mal eine Frage wegen folgenden Problems (VB 2008):

    Ich habe auf meinem Formular 12 TextBoxen. Neben jeder TextBox liegt jeweils eine PictureBox.
    Nun möchte ich, dass, je nach dem welcher Text in einer TextBox steht, ein bestimmtes Bild (aus my.Resources) in der zugehörigen PictureBox angezeigt wird. (Trigger: TextBox?_TextChanged)
    also: TextBox1.Text --> PictureBox1.Image; TextBox2.Text --> PictureBox2.Image,...
    das können je TextBox bis zu hundert verschiedene Texte sein. (also auch bis zu 100 Bilder) Dabei können in den einzelnen TextBoxen auch gleiche Texte stehen.

    Wie soll ich das hinkriegen, ohne dass ich für jede der 12 TextBoxen Code schreiben muss? Man muss dass doch irgendwie für alle 12 TextBoxen per Schleife hinkriegen?

    Wäre schön wenn ihr mir helfen könntet!
    Ja, du machst ein TextChanged Event mit mehreren TextBoxen und schreibst dann eine Schleife, welche alle Textboxen durchgeht.
    Danke schon mal für die Antworten. Sitze leider aber grade nicht an meinem rechner, kann deshalb nicht nebenbei programmieren. also, wenn ichs richtig verstehe:
    sender ist eine variable, der ich zum Beispiel den Wert "textBox1" geben kann?
    mit ctype kann ich grade auch nichts anfangen.
    Weiß nicht, vielleicht ist doch besser, wenn du mir ein verkleinertes Code-Bsp gibst. :whistling:
    Wie wäre es mal mit diesem Ansatz...

    VB.NET-Quellcode

    1. Private Sub TextBoxes_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, TextBox2.TextChanged, TextBox3.TextChanged
    2. For Each c As Control In Me.Controls
    3. If TypeOf c Is TextBox Then
    4. 'Jetzt nur als BSP
    5. Select Case c.Tag
    6. Case 1
    7. c.Text = "1"
    8. Case 2
    9. c.Text = "2"
    10. Case 3
    11. c.Text = "3"
    12. Case Else
    13. End Select
    14. End If
    15. Next c
    16. End Sub


    EDIT. Das mit den Handels habe ich bei mir vergessen reinzubauen :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MB-Tech“ ()

    naja, das weiß ich schon, aber da würde ja das Ereignis sowieso nur ausgelöst werden, wenn wirklich nur bei textBox1 der text geändert wird. weiß nicht, ich glaub ich sag nochmal was ich dachte:

    1. auf der Form wird in irgendeiner TextBox Text hineingeschrieben
    2. daher wird eine Sub aufgerufen, welche auch nur dann aufgerufen wird wenn irgendeine textbox geändert wird
    3. dann wird dort der Name der Auslöser-textBox ermittelt
    Ich meine wenn sich die Textbox in einem Panel befindet wird diese nicht aufgelistet. (Zumindest bei Me.Controls)

    @vbprogrammer

    VB.NET-Quellcode

    1. Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged, TextBox2.TextChanged, TextBox1.TextChanged ...
    2. Me.Text = "Geändert wurde TextBox Nummer " & CType(sender, TextBox).Name.Replace("TextBox", "") & "."
    3. End Sub


    Gugi war schneller. :D
    Mit meiner Methode sind alle TextBoxen in einem Event hinter Handles gelistet.

    vb-programmer schrieb:

    naja, das weiß ich schon, aber da würde ja das Ereignis sowieso nur ausgelöst werden, wenn wirklich nur bei textBox1 der text geändert wird. weiß nicht, ich glaub ich sag nochmal was ich dachte:

    1. auf der Form wird in irgendeiner TextBox Text hineingeschrieben
    2. daher wird eine Sub aufgerufen, welche auch nur dann aufgerufen wird wenn irgendeine textbox geändert wird
    3. dann wird dort der Name der Auslöser-textBox ermittelt

    ich würde es so machen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private tb As TextBox
    3. Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    4. tb = TextBox1
    5. End Sub
    6. Private Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
    7. tb = TextBox2
    8. End Sub
    9. End Class


    lg Gugi
    achso, hinter "Handles" muss ich nur die ganzen textBoxen eintragen, welche das Ereignis auslösen können.

    So muss jetzt in Kürze los, werde morgen bescheid sagen, wie ich zurechtgekommen bin.
    Vielen Dank schon mal für die Bemühungen!!