Control per Klick rausfinden

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von fsoftware.

    Control per Klick rausfinden

    Klingt komisch, aber folgendes "Problem".
    Ich habe auf einer Form 5 Pictureboxen und ich habe keine Lust für jedes den ein und selben Code nur auf "PictureBox2" etc. anzupassen und per Picturebox2_Click Events festzulegen.
    Eine Frage kann ich irgendwie ermitteln welches Control auf der Form geklickt worden ist?
    Beispiel:

    FORM
    PIC1
    PIC2
    PIC3

    Jetzt will ich nur einmal im Code festlegen so wie "msgbox(getclickcontrol)".
    Dann klicke ich PIC1 in der MsgBox steht "PIC1"
    Oder ich klicke PIC2 in der MsgBox steht "PIC2"
    Ich hoffe Ihr versteht es.

    Mfg
    Meines Wissens musst du das bei Winforms so lösen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. #Region "Events"
    2. Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
    3. GemeinsameFunktion("Pic1")
    4. End Sub
    5. Private Sub PictureBox5_Click(sender As Object, e As EventArgs) Handles PictureBox5.Click
    6. GemeinsameFunktion("Pic5")
    7. End Sub
    8. Private Sub PictureBox4_Click(sender As Object, e As EventArgs) Handles PictureBox4.Click
    9. GemeinsameFunktion("Pic4")
    10. End Sub
    11. Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click
    12. GemeinsameFunktion("Pic3")
    13. End Sub
    14. Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles PictureBox2.Click
    15. GemeinsameFunktion("Pic2")
    16. End Sub
    17. #End Region
    18. Public Sub GemeinsameFunktion(PBox As String)
    19. MsgBox(PBox)
    20. End Sub


    Bei Win8 Apps (und WPF?) kann man einfach im Designer allen fünf Pictureboxen im Clickereignis das gleiche Event geben

    EDIT: Bessere Lösung:

    VB.NET-Quellcode

    1. Private Sub GemeinsameMethode(sender As Object, e As EventArgs) Handles PictureBox1.Click, PictureBox2.Click, PictureBox3.Click, PictureBox4.Click, PictureBox5.Click
    2. Dim c As Control = DirectCast(sender, Control)
    3. MsgBox(c.Name)
    4. End Sub

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

    In WinForms kannst auch jedem Control das selbe ClickEvent zuweisen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Click(sender As Object, e As System.EventArgs) Handles Me.Click, _
    3. Button1.Click, _
    4. TextBox1.Click, _
    5. PictureBox1.Click, _
    6. Label1.Click
    7. Dim c As Control = DirectCast(sender, Control)
    8. MessageBox.Show(c.Name)
    9. End Sub
    10. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o