Usercontrol verschmeltzen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    Usercontrol verschmeltzen

    ich hab ein usercontrol mit einem listviewitem.

    das usercontrol hab ich jetz auf die form hinzugefügt.

    wenn ich jetz das event mousenter benutze gilt das nur für das usercontrol und nicht für das panel darin.

    meine frage: kann ich irgendwie die zwei controls sozusagen zusammenschmeltzen sodas der mouse enter event für alle beide gilt??

    danke :thumbsup:

    VB.NET-Quellcode

    1. Private Sub ListView1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.MouseEnter
    2. MsgBox("entering")
    3. End Sub
    4. Private Sub RichTextBox2_MouseEnter1(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox2.MouseEnter
    5. Call ListView1_MouseEnter(sender, e)
    6. End Sub


    So isses vll am einfachsten ;)
    Das ist meine Signatur und sie wird wunderbar sein!

    VB.NET-Quellcode

    1. Private Sub ListView1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.MouseEnter
    2. MsgBox("entering")
    3. End Sub
    4. Private Sub Panel1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.MouseEnter
    5. Call ListView1_MouseEnter(sender, e)
    6. End Sub


    Nur für den Fall das du es 1 zu 1 übernommen hast, bei mir war das zweite Control eine richtxtbox zum austesten, funktioniert aber auch mit einem Panel einwandfrei.
    Es kommt natürlich auch drauf an was du für ereignisse auslöst, doch ich denke so funktioniert es schon..
    Das ist meine Signatur und sie wird wunderbar sein!
    ich habe eine dll. In den dll propety kann man ein control auswählen das wird dann umrandet.

    mein probelm :Wenn ich jetz ein panel hab wo ein button drin ist und ich der dll gesagt habe sie soll das panel umranden und blau werden wenn panelmouseenter event ausgelöst wird und erst wieder transperent wird wenn das event panelmouseleave ausgelöst wird, dass wenn die mit der mouse auf denn button gehe das auch das panelmouseleave ausgelöst wird..... ;( ...wie kann ich das unterdrücken sodas das event panelmouseleave erst ausgelöst wird wenn ich nicht auf einem control im panel gehe sondern erst dann wenn die mouse das panel volkommen verlasst???

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

    Mouseenter bei Panel

    Hallo,

    Ich wollte diesen Tread aufleben lassen, da ich eine ähnliche Lösung suche.

    Ich habe ein Panel das sich bei Mouseenter erweitert, also größer wird, und bei Mouseleave in die Ursprungsgröße zurücksetzt.
    In diesem Panel habe ich 4 Labels und 1 Picturebox.
    Bei jedem Mouseenter in das Panel erweitert es sich. Fahre ich mit der Maus über ein Label oder Picturebox wird das Mouseenter bzw. Mouseleave-Ereignis des jeweiligen Controls ausgeführt. (Ist natürlich ganz normal) Wenn ich nun alle Controls bei Panel.Mouseenter unter Handles eintrage, und bei Mouseleave natürlich nicht, so wird bei jedem Mouseenter der Controls das Invalidate-Ereignis ausgelöst und das ganze Panel baut sich neu auf. Da ich die Labels untereinander angebracht habe, ist das ein wirklich unschöner Anblick.

    Nun meine Frage: Kann ich das Invalidate-Ereignis ausschalten, oder ist es möglich die Mouseenter,Mouseleave der Controls in diesem Panel zu unterbinden?

    Ich bedanke mich

    Nescafe
    Halt einfach nach "Handles" zwei Events anfügen:

    VB.NET-Quellcode

    1. Private Sub Two_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.MouseEnter, RichTextBox2.MouseEnter
    2. End Sub

    EDIT: Meine Antwort ist an den Threadsteller gerichtet.. Hab nicht gesehen, dass der Thread schon so alt ist

    Grüsse
    Pascal
    Muss gestehen ich habe das Problem nicht ganz verstanden:

    Du kannst für das Panel oder die Label jeweils einen eigenen Eventhandler haben, oder nur 1 Methode, die als Eventhandler für sowohl des Panels als auch der Labels dient. Dabei bekommst Du bei dem "Sender" das Objekt des Ereignisses (Panel, Label, sonstwas) und bei den MouseEventArgs "e" das genau event geliefert.

    Soll jetzt dieser Eventhandler unterschiedlich reagieren je nachdem von welchem Objekt es ausgelöst wurde dann unterscheidest Du das aufgrund des "sender" Namens/Typs oder legst gleich verschiedene EventHandler an.

    Edit: hmm, versteht irgendjemand diesen Text ?

    Frage anderes formuliert

    Vielleicht habe ich meine Frage undeutlich formuliert.

    VB.NET-Quellcode

    1. Private Sub Panel8_MouseHover(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Panel8.MouseHover, Label22.MouseHover, Label21.MouseHover, Label19.MouseHover, Label16.MouseHover
    2. With Panel8
    3. .Parent = Me
    4. .Size = New Size(263, 155)
    5. .BackgroundImage = My.Resources.wettervorschau
    6. .BringToFront()
    7. End With
    8. End Sub


    Das ist nun der Code für Mousehover.

    Das Panel8 hier hat eine Ausgangsgröße von

    VB.NET-Quellcode

    1. Panel8.Size = New Size(263, 73)

    Wenn ich mit der Maus in den Bereich komme (Mouseenter/Mousehover) erweitert sich das Panel auf die Höhe 155

    Soweit alles gut. Da ich aber 4 Labels und 1 Picturebox in diesem Panel habe, wird jedesmal wenn ich über eines dieser Controls fahre das Mouseenter bzw mouseleave ausgeführt. Daher habe ich die Controls nun mit in diesen Code genommen, damit das Panel nicht immer kleiner wird.

    Da aber trozdem das Panel neu gezeichnet wird, sobald ich über ein oder von einem Control fahre. (invalidate)
    Da ich bei mouseleave nur das Panel8 stehen habe, bleibt die Größe solange bis ich panel8 wieder verlassen habe.

    Nun wollte ich fragen, ob es eine Möglichkeit gibt, dies irgendwie anders zu lösen.

    Danke schon mal

    Gruß Nescafe