Controls binden für MultiEvent

  • VB.NET

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

    Controls binden für MultiEvent

    grüßt euch alle,

    ich brauche wieder hilfe,

    folgendes Problem bzw. eine wissenslücke habe ich.

    ich will eine art steuerelement bauen.
    es soll alle controls sowie die form selbs überwachen.
    wenn auf der form etwas geklickt wurde soll es eine aktion ausführen.


    hier ein bsp was ich im internet gefunden habe.

    VB.NET-Quellcode

    1. Public Class MainForm
    2. Inherits System.Windows.Forms.Form
    3. Private Sub MainForm_Load( _
    4. ByVal sender As Object, _
    5. ByVal e As System.EventArgs) _
    6. Handles MyBase.Load
    7. Dim i As Integer
    8. For i = 1 To 20
    9. lstListBox.Items.Add("Element Nummer " & _
    10. i.ToString())
    11. Next i
    12. ' Hinzufügen der Handler zu den einzelnen
    13. ' Steuerelementen; zur Demonstration definieren wir einen
    14. ' gemeinsamen Handler, der von allen Steuerelementen
    15. ' für entsprechende Ereignisse benutzt wird.
    16. AddHandler Me.btnButton.Click, AddressOf MultiEvent
    17. AddHandler Me.lstListBox.Click, AddressOf MultiEvent
    18. AddHandler Me.chkCheckBox.CheckStateChanged, AddressOf MultiEvent
    19. End Sub
    20. Private Sub MultiEvent( _
    21. ByVal sender As Object, _
    22. ByVal e As EventArgs)
    23. ' Ermitteln, zu welchem Steuerelement das Ereignis
    24. ' gehört und Erstellen einer entsprechenden Meldung.
    25. Dim s As String
    26. Select Case True
    27. Case sender Is Me.btnButton
    28. s = "Der Button wurde geklickt!"
    29. Case sender Is Me.lstListBox
    30. s = "Das Element mit dem Titel """ & _
    31. Convert.ToString(DirectCast(sender, ListBox).SelectedItem) & _
    32. """ wurde aus der ListBox gewählt!"
    33. Case sender Is Me.chkCheckBox
    34. s = "Der Status der CheckBox wurde verändert!"
    35. End Select
    36. MessageBox.Show(s, "Ereignis ausgelöst")
    37. End Sub
    38. Private Sub MainForm_Closing( _
    39. ByVal sender As Object, _
    40. ByVal e As System.ComponentModel.CancelEventArgs) _
    41. Handles MyBase.Closing
    42. RemoveHandler Me.btnButton.Click, AddressOf MultiEvent
    43. RemoveHandler Me.lstListBox.Click, AddressOf MultiEvent
    44. RemoveHandler Me.chkCheckBox.CheckStateChanged, AddressOf MultiEvent
    45. End Sub


    Soweit schaut es auch richtig gut. nur will ich folgendes haben
    diese steuerung soll nicht "fest" sein.
    also das " AddHandler Me.btnButton.Click, AddressOf MultiEvent" soll alle controls beinhalten.
    ich habe folgedes versucht.

    VB.NET-Quellcode

    1. Dim Name1 = DirectCast(sender, Control).Name
    2. AddHandler Name1.click, AddressOf MultiEvent


    und

    VB.NET-Quellcode

    1. AddHandler (DirectCast(sender, Control).Name).click, AddressOf MultiEvent

    jedoch meldet er immer "click ist kein ereignis von string".

    die aktion die ausgeführt werden soll ist für jedes Control gleich. es soll nur eine form schließen.

    wie kann ich es bewerkstelligen das bei addhandler alle controls in der form angesprochen werden.
    bitte um hilfe
    danke
    zu deinem Problem habe ich selbst auch keine Ahnung im Moment. Aber die Fehlermeldung ist ja recht eindeutig: Du musst das .Name wegmachen. Denn du willst ja auf das Control selbst zugreifen, nicht dessen Namen

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    hey, geh doch einfach alle controls durch und füge ihnen mittels addhandler einen sub hinzu der das event auslöst. Hier mal ein beispiel: die zahl wird hochgezählt egal auf welches control ich klicke, erstell einfach eine forms-anwendung und platziere wahlos alle möglichen controls zum testen

    VB.NET-Quellcode

    1. Dim a As Integer = 0
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. For Each c As Control In Me.Controls
    4. AddHandler c.Click, AddressOf LOL
    5. Next
    6. End Sub
    7. Public Sub LOL()
    8. a += 1
    9. Me.Text = a
    10. End Sub

    Danke, danke, danke

    sorry das ich mich gemeldet habe. danke für eure antworten.
    Vielen vielen Dank.....
    Super

    Es funktioniert so wie ich es haben wollte, ein prost auf FreakJNS.

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