Benutzersteuerelement MouseClick Event nicht gefunden

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Silvergreen.

    Benutzersteuerelement MouseClick Event nicht gefunden

    Guten Morgen allerseits,

    ich habe mir mal gedacht, die normalen Buttons von VS sehen nicht gerade schön aus und daher wollte ich diese durch meine eigenen ersetzten. Wenn ich meinem Custom Button jetzt allerdings ein Event hinzufügen möchte (MouseClick), so zeigt der Code mir einen Error und das genau bei

    Quellcode

    1. Handles Button_volume_minus2.MouseClick <- Nur MouseClick ist unterstrichen
    Die Fehlernachricht ist die folgende: Das Ereignis "MouseClick" wurde nicht gefunden. Nun ich würde den Button gerne belegen, daher frage ich euch mal ob ihr eine Lösung wisst.

    Mfg Silvergreen
    ?(
    @mausekeks

    VB.NET-Quellcode

    1. Private Sub Button_volume_minus2_MouseClick_1(sender As Object, e As MouseEventArgs) Handles Button_volume_minus2.MouseClick
    2. End Sub


    Mehr ist da nicht :D , Ich habe ein neues Benutzersteuerelement erstellt. Das Icon geladen. Die Form gestartet. Den neuen Button aus der Toolbox gezogen. In die Button-Ereignisse MouseClick ausgewählt und schwups ist der Fehler da
    ?(
    @mausekeks Das Click Event hat genau den gleichen Fehler. Genau, ich habe ein User control erstellt, die verschiedenen States den Buttons (pressed, hover...) einem Bild zugeordnet und den Neuen Button aus der Toolbox gezogen. Mehr nicht. Im Designer wird mir momentan auch ein Fehler angezeigt, das: "Der Typ "VolumeMixer.Button_volume_minus" ist nicht definiert" ist.
    ?(
    @mausekeks

    VB.NET-Quellcode

    1. ​Public Class Button_volume_minus
    2. Private Sub Button_volume_minus_MouseHover(sender As Object, e As EventArgs) Handles MyBase.MouseHover
    3. Me.BackgroundImage = My.Resources.Button_Volume__hover
    4. End Sub
    5. Private Sub Button_volume_minus_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
    6. Me.BackgroundImage = My.Resources.Button_Volume__pressed
    7. End Sub
    8. Private Sub Button_volume_minus_MouseLeave(sender As Object, e As EventArgs) Handles MyBase.MouseLeave
    9. Me.BackgroundImage = My.Resources.Button_Volume__normal
    10. End Sub
    11. End Class
    ?(
    Dein Button erbt nicht von Button

    Probier es mal damit:


    VB.NET-Quellcode

    1. Public Class Button_volume_minus
    2. Inherits Windows.Forms.Button
    3. Private Sub Button_volume_minus_MouseHover(sender As Object, e As EventArgs) Handles MyBase.MouseHover
    4. Me.BackgroundImage = My.Resources.Button_Volume__hover
    5. End Sub
    6. Private Sub Button_volume_minus_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
    7. Me.BackgroundImage = My.Resources.Button_Volume__pressed
    8. End Sub
    9. Private Sub Button_volume_minus_MouseLeave(sender As Object, e As EventArgs) Handles MyBase.MouseLeave
    10. Me.BackgroundImage = My.Resources.Button_Volume__normal
    11. End Sub
    12. End Class
    Brain is Loading: 35%
    @mausekeks

    VB.NET-Quellcode

    1. ​Inherits Windows.Forms.Button <- Windows.Forms.Button schmeißt mir einen Fehler

    "Der Typ "Windows.Forms.Button" ist nicht definiert."
    daraufhin habe ich in der Fehlerbehebung "System.Windows" hinzugefügt

    VB.NET-Quellcode

    1. Inherits System.Windows.Forms.Button <- System.Windows.Forms.Button schmeißt mir einen Fehler

    "Die für die Button_volume_minus-Klasse festgelegte Button-Basisklasse darf sich nicht von der UserControl-Basisklasse eines ihrer anderen partiellen Typen unterscheiden."
    Mögliche Korrektur wäre vereinfachen, ändert am Fehler aber nichts
    ?(
    Warum von Button erben?
    UserControl erstellen, Deinen Code rein, kompilieren, auf's Form ziehen, fertig. Ich hab damit keine Probleme gehabt, als ich es grad nachgestellt hab. MouseHover solltest Du aber durch MouseEnter ersetzen, sonst scheint es so, als ob Dein PseudoButton laggt.
    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.
    @mausekeks
    Klingt ja logisch, das man den Button erst erben muss. Nur es funktioniert halt nicht

    @VaporiZed
    Ich kenne es normaIerweise auch nur so. Und normaIerweise funktioniert es so auch. Daher weiß ich auch nicht warum es diesmal nicht funktioniert.
    Ps. Das Problem mit dem laggenden Button hatte ich schon mal, danke, werde ich ändern.
    ?(
    Anbei mein Testprojekt, welches wie gewünscht läuft. UserControls werden als eigenständiges Element dem Projekt hinzugefügt und agieren dann als Formularähnliches Element. Eine Button-(Ver)Erbung ist da m.E. nicht möglich, da ein UserControl ein CE-Container ist.
    Dateien
    • WinForms1.zip

      (21,3 kB, 115 mal heruntergeladen, zuletzt: )
    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.
    @VaporiZed Auch bei mir funktioniert dein Projekt problemlos. Nur bei meinem habe ich das Problem mit den Ereignissen
    Auch in einem anderen Projekt von mir habe ich keinen Fehler, obwohl der Code (vom Button) genau der selbe ist.
    Im Designer werden mir Fehler bei "Friend WithEvents" und bei Me.X = New VolumeMixer.X() angezeigt : Der Typ VolumeMixer.X ist nicht definiert
    ?(

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

    Kannst Du das Projekt minimalistisch, aber noch fehlerproduzierend hochladen? Am Ende fehlt ggf. nur ein Import oder Verweis.
    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.
    @VaporiZed
    Ich warne dich vor, es wird wahrscheinlich viel zu viel Code im ganzen Projekt sein. Vieles kann man sicher vereinfachen. Nur ich probiere es erstmal selber, statt gleich sofort im Internet nach Lösungen zu suchen. Und wenn meine Lösungen nun mal funktionieren, kann es schon vorkommen das das ziemlich unaufgeräumt ist.
    Gut das mit dem minimalistisch hat jetzt nicht ganz funktioniert :D , aber hier ist das Projekt
    Dateien
    • VolumeMixer.zip

      (635,42 kB, 81 mal heruntergeladen, zuletzt: )
    ?(
    Falsche Namespace-Angabe.
    Entferne aus der Form1.Designer.VB die VolumeMixer.-Prefixes bei den Codezeilen

    VB.NET-Quellcode

    1. Me.Button_volume_minus1 = New VolumeMixer.Button_volume_minus()
    und

    VB.NET-Quellcode

    1. Friend WithEvents Button_volume_minus1 As VolumeMixer.Button_volume_minus
    und fertig.
    D.h. folgendes muss dort stehen:

    VB.NET-Quellcode

    1. Me.Button_volume_minus1 = New Button_volume_minus()
    und

    VB.NET-Quellcode

    1. Friend WithEvents Button_volume_minus1 As Button_volume_minus

    Und vergiss Option Strict On nicht.
    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.