Usercontrol (Control + Panel) wird nicht vereinheitlicht - warum?

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von julio.

    Usercontrol (Control + Panel) wird nicht vereinheitlicht - warum?

    Hallo liebe Community,
    nachdem mich Google schon öfters bei meinen Visual Basic-Problemen zu euch geführt hat, und ich dieses Mal keine Lösung finden konnte, wende ich mich hoffnungsvoll an euch.

    Mein Problem ist folgendes:

    Ich habe mir einen neuen, eigenen Button in Visual Basic erstellt.
    Einmal ist da das Control, welches ein Hintergrundbild hat und dann ist
    da noch ein Label drüber, welches den Text des Buttons darstellt. Das
    Label wird automatisch auf die Größe des Controls skaliert, damit der
    Text immer zentral ist.

    Nun ist das Problem, dass wenn ich in meiner Form den Button nutze und
    das Click-Event nutze, das Event nicht triggert, da ich nur
    scheinbar immer auf das Label klicke und nicht auf das Control selbst,
    was wohl nötig ist.

    Das ist aber blöd, denn selbst dann, wenn ich das Label kleiner mache,
    wird das Click-Event nicht triggern, falls der Nutzer auf den Text
    klicken sollte.

    Eigentlich sollte das Label ja auch Bestandteil des Buttons sein, einzeln kann man es ja auch dann nicht mehr ansteuern.

    Tatsächlich suche ich also eine Lösung, dass beim Klicken auf das Label das Event Kotor_Button1.Click auslöst.

    Damit ihr euch das besser vorstellen könnt, hänge ich euch vier Bilder der Situation an.

    Vielen lieben Dank für eure Hilfe.
    Bilder
    • p1.png

      29,24 kB, 926×386, 177 mal angesehen
    • p2.png

      6,4 kB, 561×86, 197 mal angesehen
    • p3.png

      9,93 kB, 585×171, 160 mal angesehen
    • p4.png

      15,54 kB, 785×182, 150 mal angesehen
    Tatsächlich ist das in dem Objekt "kotor_button" schon in einer Klasse gepackt. Das Label kann man in seinen Eigenschaften so auch nicht mehr ansteuern. Ich hoffe, das habe ich richtig verstanden.

    Das Label würde ich ja triggern, aber das kann ich nur in der Klasse kotor_button. Da der auszuführende Code aber nicht immer der selbe ist (es handelt sich hierbei um Menü-Buttons), muss es möglich sein, dass wenn ich Handles kotor_button1.click verwende, auch dann anspringt, wenn ich das vermeindliche Label anklicke.
    Mhm. Das wollte ich auch erst versuchen, Abfangen ist auch leicht, nur weiß ich nicht, wie ich anschließend dynamisch das .click-Event des Buttons auslöse, auf welchen geklickt wurde. Kannst du mir da weiterhelfen?

    Vielen Dank!
    Du könntest auch einen Button selbst zeichnen.
    Also ein komplett eigenes Control.
    Somit kannst du auf dem ganzen Button das Click-Event abfangen.

    VB.NET-Quellcode

    1. Public Class Class1
    2. Inherits System.Windows.Forms.Button
    3. Public Sub New()
    4. MyBase.New()
    5. MyBase.SetStyle(ControlStyles.UserPaint, True)
    6. MyBase.SetStyle(ControlStyles.DoubleBuffer, True)
    7. End Sub
    8. Private Sub Class1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
    9. End Sub
    10. End Class


    Ist (denke ich) eine bessere Möglichkeit als das mit nem Label und ner Picturebox zu machen ;)