Hover durch Dialog aktiviert

  • VB.NET

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

    Hover durch Dialog aktiviert

    Heyho :)

    ICh bin im Moment dabei ein paar eigene Controls zu schreiben.
    Dabei habe ich folgendes Problem.

    Bei MouseEnter wird die Eigenschaft Hover (Boolean) auf True gesetzt.
    Dann wird 'Invalidated' also neu gezeichnet. Wenn ich jetzt Aber mit der Maus auf den Button klicke und dieser
    eine MsgBox zeigt, dann fahre ich ja aus dem Button heraus. Da die MsgBox aber ein Dialog ist realisiert der Button
    das nicht: Der Hover ist also noch aktiv wenn ich die MsgBox weggeklickt habe - und nicht mehr über dem Button bin.

    Einzige mir möglich erscheindende Lösung wäre ein Timer. Aber ich bin mir sicher das wäre VIEL zu unsauber.
    LG
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Nein.

    Der Mauszeiger kommt auf den Button und klickt diesen.
    Dann öffnet sich eine messageBox während die Mus ja noch auf dem Button ist.
    Die Maus verlässt den Controlbereich - Der Button merkt das aber nicht weil ja die MessageBox (als Dialog) offen
    ist. Klicke ich nun die Box weg ist der Hover aktiv - und die Maus nicht mehr auf dem Button.
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Dann solltest Du vor dem Öffnen der MessageBox das Flag zurücksetzen oder Deine ganze Aktion ohne Flag mit einem Prozeduraufruf erledigen.
    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!
    Könntest du das näher erläutern?
    Das Problem ist ja, dass ich nicht weiß wozu der Benutzer den Button nachher nutzt.
    Im Falle eines Dialoges möchte ich aber diesen Bug verhindern.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    etwa so:

    VB.NET-Quellcode

    1. Sub MouseEnter()
    2. Hover = True
    3. EineProzedurAufrufen()
    4. ' ...
    5. Hover = False
    6. MessageBox.Show("bla")
    7. ' ...
    8. End Sub
    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!
    @RodFromGermany:

    Du verstehst da glaube ich etwas falsch:
    Ich weiß ja nicht ob der Endbenutzer eine MessageBox einbaut.
    Er kann genauso gut nur eine Form öffnen oder so.

    Aber falls er eine MsgBox öffnet, will ich, dass der
    Hover danach inaktiv, und wieder nur der Focus sitzt.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Also so:

    VB.NET-Quellcode

    1. Sub MouseEnter()
    2. Hover = True
    3. EinEventSenden()
    4. Hover = False
    5. End Sub
    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!
    Was?

    Nun ich glaube wir reden aneinander vorbei?
    Was soll ich denn bitte für ein Event senden?

    Wenn ich (der Entwickler) dir (dem Benutzer) einen Button als Klassenbibliothek
    gebe und du ihn verwendest hast du dann das (wenn er ExtraButton heißt):

    VB.NET-Quellcode

    1. Sub ExtraButton1_Click(ByVals) Handles ExtraButton1.Click


    Wenn du dann

    VB.NET-Quellcode

    1. Form2.Show


    ins Event Click Sub schreibst, besteht kein Problem. Wenn du aber

    VB.NET-Quellcode

    1. MsgBox("Hallo")


    ins Event Click Sub schreibst, dann besteht der oben genannte Bug. Dann wird nähmlich
    die MsgBox als Dialog angezeigt und ich bewege die Maus aus dem Button ohne das dieser
    das wahr nimmt. Wenn ich die MessageBox dann wegklicke dann ist das Hover noch aktiv.
    Ich hänge mal Screenshots an.
    Bilder
    • bug.png

      24,66 kB, 482×184, 147 mal angesehen
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    Nikx schrieb:

    Was soll ich denn bitte für ein Event senden?
    Fange es ab und sende es weiter.

    VB.NET-Quellcode

    1. Sub ExtraButton1_Click(ByVals) Handles ExtraButton1.Click
    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!
    Lol, WELCHES denn?
    Ich bin scheinbar wirklich zu blöd,
    könntest du mir bitte anhand des ExtraButtons ein Beispiel geben?

    Bzw. es nochmal gaaaanz langsam erklären?
    Lol :/
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Deine Klasse fängt das Klick ab und generiert ein neues Event Klick.
    Kann ich jetzt nicht aus dem Ärmel schütteln.
    Nenn das neue zunächst Click2 oder so.
    --------------------------
    UserControl mit Button

    VB.NET-Quellcode

    1. Public Class UserControl1
    2. Public Event Click1(sender As System.Object, e As System.EventArgs)
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. RaiseEvent Click1(Me, EventArgs.Empty)
    5. End Sub
    6. End Class
    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“ ()

    Also ein Override Sub oder was?
    Kannst du mir ein paar STichwörter nennen, dann versuch ich mich dran?

    Außerdem: Was soll das neue Sub dann machen?
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    VB.NET-Quellcode

    1. Public Class UserControl1
    2. Public Event Click1(sender As System.Object, e As System.EventArgs)
    3. Public Shadows Event Click(sender As System.Object, e As System.EventArgs)
    4. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    5. RaiseEvent Click1(Me, EventArgs.Empty)
    6. End Sub
    7. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    8. RaiseEvent Click(Me, EventArgs.Empty)
    9. End Sub
    10. End Class

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub UserControl11_Click(sender As System.Object, e As System.EventArgs) Handles UserControl11.Click
    3. MessageBox.Show("Click")
    4. End Sub
    5. Private Sub UserControl11_Click1(sender As System.Object, e As System.EventArgs) Handles UserControl11.Click1
    6. MessageBox.Show("Click1")
    7. End Sub
    8. End Class
    :thumbsup:
    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!
    Dein Thread war aber schnell editiert :D
    Grüße

    *Edit:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. RaiseEvent Click1(Me, EventArgs.Empty)
    3. End Sub
    4. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    5. RaiseEvent Click(Me, EventArgs.Empty)
    6. End Sub


    Ich bin wohl zu blöd - was bewirken diese 2 Buttons wenn diese
    das normale ClickEvent verwenden. Warum überhaupt 2?
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!