Eigenes Control - Aktionen in der Hauptanwendung abfangen

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Eigenes Control - Aktionen in der Hauptanwendung abfangen

    Hallo zusammen,

    wie Ihr ja wisst, erstelle ich mir gerade ein Steuerelement.

    Jetzt suche ich eine Möglichkeit, wie meine spätere Hauptanwendung auf Aktionen innerhalb meines Controls reagieren kann.

    Wenn ich also innerhalb des Controls klicke, werden bei mir ja einige Änderungen durchgeführt. Auf dieses Clicken oder später auch Doppelklicken möchte ich in der Hauptanwendung natürlich auch reagieren können und dann dort wieder Aktionen ausführen.

    Habe bisher aber beim Suchen nichts passendes gefunden.

    Könntet Ihr mir mit einem Bsp. bzw. Begriffen weiterhelfen, nach denen ich suchen muss?

    Vielen Dank schon einmal.

    Volker
    Wie, nix passendes gefunden? Du hast doch in Deiner TestApp in dem anderen Thread schon genau das richtige verwendet: Public Events
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo VaporiZed,

    vielen Dank für die schnelle Rückmeldung.

    Du hast insofern recht, dass mein Event "Standard_Aktion_ausfuehren" nach aussen sichtbar ist.

    Mein Click-Handler sieht aktuell so aus bzw. den Aufruf habe ich im Control aktuell so platziert

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub HandleStandard_Aktion_ausfuehren(sender As Object, e As EventArgs) Handles Me.Standard_Aktion_ausfuehren
    2. ' ****************************************************************
    3. ' Hier wird auf Änderungen der neuen Eigenschaften reagiert und die Checkbox optisch den aktuellen Einstellungen angepasst
    4. ' ****************************************************************
    5. Call Anzeige_aktualisieren()
    6. RaiseEvent Click(Me, EventArgs.Empty)
    7. End Sub
    8. Private Sub HandleClick(sender As Object, e As EventArgs) Handles Me.Click
    9. ' Somit passiert hier intern erst einmal nichts.
    10. End Sub


    Ich habe mir mal ein kleines DataGridView erstellt, welches mir Daten aus einer Accesstabelle anzeigt. In dieser Tabelle gibt es ein Ja/Nein und ein Textfeld. Von den insgesamt 6 Datensätzen ist jeder zweite im ersten Feld angehakt. Über einen Filter greife ich nun den Checked-Wert meines Controls ab und es werden mir nur jeweils 3 Datensätze angezeigt. Die Textbezeichnungen lt. Testtext 1-6. Grundsätzlich funktioniert diese Filterung erst einmal. Sobald aber sich der Checked-Wert nach aussen hin nicht ändert, passiert mit den Daten natürlich auch nichts.

    Wenn ich jetzt mit

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. If Me.Neue_Checkbox5.Checked = True Then
    3. Me.Neue_Checkbox5.Checked = False
    4. Else
    5. Me.Neue_Checkbox5.Checked = True
    6. End If
    7. End Sub
    8. Private Sub Neue_Checkbox5_Click(sender As Object, e As EventArgs) Handles Neue_Checkbox5.Click
    9. ' MsgBox("click Click")
    10. TextBox1.Text = Neue_Checkbox5.Checked
    11. Call DB_oeffnen()
    12. End Sub


    von aussen in der Hauptanwendung über Button2 den Checked-Wert ändere, passiert folgendes:
    1. Die Button2-Sub läuft einwandfrei durch
    2. und die Neue_Checkbox5_Click-Sub auch
    3. Die Daten werden aktualisiert (sofern der Checked-Wert sich geändert hat)
    4. Erst wenn ich den Text des Control ändere und dann noch einmal auf den Button2 klicke ändern sich auch die Daten richtig

    Somit weiß ich, dass mein Filter erst einmal läuft.

    Wenn ich jetzt aber mit

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Neue_Checkbox5_Click(sender As Object, e As EventArgs) Handles Neue_Checkbox5.Click
    2. MsgBox("click Click")
    3. TextBox1.Text = Neue_Checkbox5.Checked
    4. Call DB_oeffnen()
    5. End Sub


    versuche auf das Klicken zu reagierten, passiert hier leider nichts. (Was aber grundsätzlich schon einmal da ist, ist das Click-Event).

    Wenn ich die Hauptanwendung starte, dann wird mir 10 mal die Click-Sub durchlaufen. (Habe dazu die MSGBox-Zeile aktiviert).Diese Anzahl von 10 kommt schon hin, da diese Handle-Sub natürlich bei jeder Eigenschaft die geändert bzw. eingestellt wird aufgerufen wird.

    Jetzt zu meinen Fragen:

    Wo und wie platziere ich den Aufruf des Click-Events am besten?

    Freundliche Grüße und einen schönen Sonntag noch.

    Volker
    Deine ganzen Control123-Namen solltest Du für das Verständnis dringend nachbessern. Niemand weiß bei solchen Namen, welchen Control welche Aufgabe hat.
    Dein zweiter Codeblock: ohje. Einfacher:

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. Me.Neue_Checkbox5.Checked = Not Me.Neue_Checkbox5.Checked
    3. End Sub

    Spekulatius: Probier mal statt dem Click-EventHandler Deiner CheckBox den CheckedChanged-EventHandler
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.