Click Ereignis und Dll

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Click Ereignis und Dll

    Hallo, habe einen Button in einer Dll, den ich zu Laufzeit meinem Main Programm hinzufüge (Verweis). Wie kann ich das mit dem Click Event machen?

    VB.NET-Quellcode

    1. 'Main Programm
    2. '______________
    3. Dim _class As Object = Activator.CreateInstance(AssReflect.GetType(sFile & "." & mode.Name))
    4. ...
    5. tc.TopToolStripPanel.Controls.Add(_class.Load_ToolStrip()) 'Toolstrip mit Button wird aus der Dll tc (TabControl) hinzugefügt.
    6. Sub Test()
    7. ' Die Sub möchte ich jetzt ausführen
    8. End Sub


    Liebe Grüße und vielen Danke schonmal :saint:
    In Arbeit...
    Du musst dem erstellten Button den EventHandler hinzufügen.

    Siehe hier

    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:

    vico255 schrieb:

    zu Laufzeit

    Dazu wäre ein Plugin-System angebracht:
    Wie erstelle ich ein PlugIn System unter VB.NET (Framework 2)
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Gather schrieb:

    Dazu wäre ein Plugin-System angebracht:


    Das habe ich hinbekommen, wie muss ich das mit der Schnittstelle und dem Event machen?

    VB.NET-Quellcode

    1. 'host
    2. Dim WithEvents Button As myInterface
    3. Public Sub ClickEventHandler(ByVal Sender As Object, ByVal E As EventArgs) Handles Button.Click
    4. MsgBox("test")
    5. End Sub
    6. 'Interface
    7. Event Click(ByVal Sender As Object, ByVal E As EventArgs)
    8. 'dll
    9. Public Event click1(ByVal Sender As Object, ByVal E As EventArgs) Implements [Interface].myInterface.Click
    10. Dim tb As New ToolStripButton
    11. AddHandler tb.Click, AddressOf tb_Click
    12. Private Sub tb_Click(sender As Object, e As System.EventArgs) Handles Me.click1
    13. RaiseEvent click1(sender, e)
    14. End Sub


    Ein Ausnahmefehler des Typs "System.StackOverflowException" ist in System.Windows.Forms.dll aufgetreten.

    Was mach ich falsch?

    Endlosschleife?
    In Arbeit...

    vico255 schrieb:

    "System.StackOverflowException"
    Da ruft sich eine Funktion rekursiv selbst auf.
    Sieh nach, wo das passiert (da bleibt das Programm stehen) und verstehe den tatsächlichen Ablauf.
    Dann überlegst Du Dir, wie es ablaufen soll und korrigierst Deinen Code.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich bekomm es nicht hin ?(

    VB.NET-Quellcode

    1. Private WithEvents mPopup As myInterface
    2. Private Sub mPopup_AddFilter() Handles mPopup.AddFilter
    3. MsgBox("yada")
    4. End Sub

    VB.NET-Quellcode

    1. Event AddFilter()

    VB.NET-Quellcode

    1. Public Event AddFilter() Implements myInterface.AddFilter
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    3. RaiseEvent AddFilter()
    4. End Sub


    "System.StackOverflowException" ]

    ist weg aber ich bekomm die MsgBox("yada") nicht. :/
    In Arbeit...

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

    @vico255 Kannst Du das komplette Projekt (Hauptprogramm, DLL) ohne Binaries als ZIP anhängen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @ErfinderDesRades es ist ein Click Event

    VB.NET-Quellcode

    1. Imports System.Windows.Forms
    2. Imports [Interface]
    3. Public Class Testg_a
    4. Implements [Interface].myInterface
    5. Public Function Load_Toolstrip() As ToolStrip Implements [Interface].myInterface.toolStrip
    6. Dim ts As New ToolStrip
    7. Dim tb As New ToolStripButton
    8. AddHandler tb.Click, AddressOf Button1_Click
    9. tb.Image = My.Resources.buttonicon1
    10. ts.Items.Add(tb)
    11. Return ts
    12. End Function
    13. Public Event AddFilter() Implements myInterface.AddFilter
    14. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    15. RaiseEvent AddFilter()
    16. End Sub
    17. End Class


    Die Bezeichnung ist wohl irreführend Sorry
    In Arbeit...
    @vico255 Wer aboniert das Event AddFilter?

    RodFromGermany schrieb:

    Kannst Du das komplette Projekt (Hauptprogramm, DLL) ohne Binaries als ZIP anhängen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ungern @RodFromGermany

    Ich habe mich zum schluss hieran orientiert stackoverflow.com/questions/55…?answertab=active#tab-top

    Ein Window Form, ein Interface und eine Dll

    In der WindowForm wird ein ToolStrip samt Button aus der Dll geladen und angezeigt. Nun möchte ich halt diesen Button auch benutzen. Wenn er gedrückt wird, soll er ein ContentPanel aus der Dll holen
    und in der MainForm anzeigen. Da der Button in der Dll erstellt wird, erfahre ich in der Mainform nicht ob er geclickt wurde.

    LG
    In Arbeit...

    vico255 schrieb:

    Ungern
    Dann mach ein Rumpf von Deinem Projekt: leere MainForm und ne DLL mit dem nötigsten bzw. erforderlichen Inhalt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @vico255 Die Instanz welcher Klasse soll denn gefunden werden?
    Probier mal dies:

    VB.NET-Quellcode

    1. Public Class Class1
    2. Implements myInterface
    3. Public Event AddFilter() Implements myInterface.AddFilter
    4. Public Function tabControll() As System.Windows.Forms.TabControl Implements myInterface.tabControll
    5. Return New System.Windows.Forms.TabControl
    6. End Function
    7. Public Function toolStrip() As System.Windows.Forms.ToolStrip Implements myInterface.toolStrip
    8. Return New System.Windows.Forms.ToolStrip
    9. End Function
    10. End Class
    =================
    Und füge dem Hauptprogramm nicht die Interface.dll, sondern das Projekt Interface als Verweis hinzu, da kannst Du drin debuggen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

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