ToolStripButton MouseEnter MouseLeave überschreiben

  • VB.NET
  • .NET (FX) 4.0

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

    ToolStripButton MouseEnter MouseLeave überschreiben

    Moin Leutz,

    ich erzeuge mithilfe einer Textdatei ca. 40 ToolstripButtons.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. For Each ro As DataRow In btns.Rows
    2. Dim c1 As String = ro.Item(1).ToString.Substring(0, 1)
    3. If IsNumeric(c1) Then
    4. Dim newchild = New ToolStripButton()
    5. Dim sep = New ToolStripSeparator()
    6. sep.Name = "SEP" & i
    7. newchild.Text = ro.Item(1).ToString
    8. newchild.Tag = ro.Item(2).ToString
    9. newchild.Name = "BTN" & i
    10. newchild.Image = My.Resources.companybuilding
    11. AddHandler newchild.Click, AddressOf handlex
    12. AddHandler newchild.MouseHover, AddressOf pressed
    13. My.Forms.Form1.ToolStrip2.Items.Add(newchild)
    14. My.Forms.Form1.ToolStrip2.Items.Add(sep)
    15. i += 1
    16. Else
    17. Dim newchild = New ToolStripButton()
    18. Dim sep = New ToolStripSeparator()
    19. sep.Name = "SEP" & i
    20. newchild.Text = ro.Item(1).ToString
    21. newchild.Tag = ro.Item(2).ToString & "|" & ro.Item(4).ToString
    22. newchild.Name = "BTN" & i
    23. newchild.AutoToolTip = False
    24. newchild.BackgroundImage = My.Resources.eigenerbutton
    25. newchild.BackgroundImageLayout = ImageLayout.Stretch
    26. If ro.Item(1).ToString.Contains("Chef") Then
    27. newchild.Image = My.Resources.standartuser
    28. Else
    29. If ro.Item(3).ToString = "1" Then
    30. newchild.Image = My.Resources.chefuser
    31. newchild.BackgroundImage = My.Resources.eigenerbutton
    32. newchild.BackgroundImageLayout = ImageLayout.Stretch
    33. End If
    34. End If
    35. AddHandler newchild.MouseEnter, AddressOf pressed
    36. AddHandler newchild.Click, AddressOf handlex
    37. AddHandler newchild.MouseLeave, AddressOf pressnicht
    38. My.Forms.Form1.ToolStrip3.Items.Add(newchild)
    39. My.Forms.Form1.ToolStrip3.Items.Add(sep)
    40. i += 1
    41. End If
    42. Next


    Ich möchte gerne in den Events mousenter und mousleave das Hintergrundbild des Buttons ändern. Klappt eigentlich auch. Problem ist nur, dass sobald die Maus sich über einen Button bewegt, dieser "ausgewählt" wird und sich selbst eckig und Blau selektiert.
    Wie kan nich das verhindern? Ich möchte nur, dass sich das Hintergrundbild ändert aber nicht der Button markiert wird. Beste Grüße und besten Dank :)
    Richtig

    Falsch
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    @razzzer530i Was ist denn das für ein Ranz Code?
    So was gehört direkt in die Form, die da behandelt wird.
    Was hat dieser Code mit dem Button-Bild zu tun?
    Dass der Button bei MausEnter "vorselektiert" wird, ist so, das steckt im Framework. Da müsstest Du Dir einen eigenen Button bauen, wo das nicht so ist, z.B. aud Basis eines Labels.
    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!
    Wieso Ranz code?
    Ich erzeuge damit genau die Toolstripbuttons die ich haben will, die im Tag 2 Pfade mitgeben und bei klick etwas ausführen. Da der Datensatz der die erzeugt variieren kann, habe ic hdas so ausprobiert und es funktioniert spitze. Was ist falsch daran? Verbessere mich gerne
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~

    razzzer530i schrieb:

    Ranz code
    ist z.B. so was:

    razzzer530i schrieb:

    VB.NET-Quellcode

    1. My.Forms.Form1.ToolStrip2.Items.Add(newchild)
    Solch Code sollte in der Form selbst stehen.
    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!
    okay aber wieso ist es Ranz, das in ein Modul zu schreiben? Also was ist das Problem bei der Sache. Wills nur verstehen werde mich natürlich verbessern.
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    @razzzer530i Aus einem Modul greift man nicht über VB6-Kompatibilitäts-Ranz-Irgendwas-Klassen auf Formen eines Projekts zu.
    Da musst Du jetzt nicht diskutieren, das ist Style Guide.
    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!