Freigeben über


So erweitern Sie ein vorhandenes Steuerelement

Wenn Sie einem vorhandenen Steuerelement weitere Features hinzufügen möchten, können Sie ein Steuerelement erstellen, das von einem vorhandenen Steuerelement erbt. Das neue Steuerelement enthält alle Funktionen und visuellen Aspekte des Basissteuerelements, bietet ihnen jedoch die Möglichkeit, es zu erweitern. Wenn Sie beispielsweise ein Steuerelement erstellt haben, das Buttonerbt, würde das neue Steuerelement genau wie eine Schaltfläche aussehen und funktionieren. Sie können neue Methoden und Eigenschaften erstellen, um das Verhalten des Steuerelements anzupassen. Bei einigen Steuerelementen können Sie die OnPaint-Methode außer Kraft setzen, um das Aussehen des Steuerelements zu ändern.

Hinzufügen eines benutzerdefinierten Steuerelements zu einem Projekt

Verwenden Sie nach dem Erstellen eines neuen Projekts die Visual Studio-Vorlagen, um ein Benutzersteuerelement zu erstellen. Die folgenden Schritte veranschaulichen das Hinzufügen eines Benutzersteuerelements zu Ihrem Projekt:

  1. Machen Sie in Visual Studio den Bereich Projekt-Explorer ausfindig. Klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie "Benutzersteuerelement> aus.

    Klicken Sie mit der rechten Maustaste auf den Visual Studio-Lösungs-Explorer, um ein Benutzersteuerelement zu einem Windows Forms-Projekt hinzuzufügen

  2. Wählen Sie das Element benutzerdefiniertes Steuerelement (Windows Forms) aus.

  3. Geben Sie im Textfeld Name einen Namen für Ihr Benutzersteuerelement ein. Visual Studio stellt einen standard- und eindeutigen Namen bereit, den Sie verwenden können. Klicken Sie dann auf Hinzufügen.

    Dialogfeld „Element hinzufügen“ in Visual Studio für Windows Forms

  4. Drücken Sie im Entwurfsmodus des Steuerelements F7 , oder klicken Sie auf den Link "Codeansicht ".

    Tipp

    Sie können auch mit der rechten Maustaste auf die Datei im Projektmappen-Explorer-Fenster klicken und "Code anzeigen" auswählen.

Ändern des benutzerdefinierten Steuerelements in eine Schaltfläche

In diesem Abschnitt erfahren Sie, wie Sie ein benutzerdefiniertes Steuerelement in eine Schaltfläche ändern, die die Anzahl der Klicks zählt und anzeigt.

Ein benutzerdefiniertes Windows Forms-Steuerelemente für .NET

Nachdem Sie Ihrem Projekt ein benutzerdefiniertes Steuerelement mit dem Namen CustomControl1 hinzugefügt haben, sollte der Steuerelement-Designer geöffnet werden. Doppelklicken Sie andernfalls im Projektmappen-Explorer auf das Steuerelement. Führen Sie die folgenden Schritte aus, um das benutzerdefinierte Steuerelement in ein Steuerelement zu konvertieren, das von Button erbt und es erweitert:

  1. Wenn der Steuerelement-Designer geöffnet wurde, drücken Sie F7, oder klicken Sie mit der rechten Maustaste auf das Designer-Fenster, und wählen Sie dann Code anzeigen aus.

  2. Im Code-Editor sollte eine Klassendefinition angezeigt werden:

    namespace CustomControlProject
    {
        public partial class CustomControl2 : Control
        {
            public CustomControl2()
            {
                InitializeComponent();
            }
    
            protected override void OnPaint(PaintEventArgs pe)
            {
                base.OnPaint(pe);
            }
        }
    }
    
    Public Class CustomControl2
    
        Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
            MyBase.OnPaint(e)
    
            'Add your custom paint code here
        End Sub
    
    End Class
    
  3. Ändern Sie die Basisklasse von Control in Button.

    Von Bedeutung

    Wenn Sie Visual Basicverwenden, wird die Basisklasse in der *.designer.vb Datei Ihres Steuerelements definiert. Die in Visual Basic zu verwendende Basisklasse ist System.Windows.Forms.Button.

  4. Fügen Sie eine klassenspezifische Variable namens _counter hinzu.

    private int _counter = 0;
    
    Private _counter As Integer = 0
    
  5. Überschreiben Sie die OnPaint-Methode. Diese Methode zeichnet das Steuerelement. Das Steuerelement soll einen Text über der Schaltfläche zeichnen. Daher müssen Sie zuerst die OnPaint-Methode der Basisklasse aufrufen und dann den Text zeichnen.

    protected override void OnPaint(PaintEventArgs pe)
    {
        // Draw the control
        base.OnPaint(pe);
    
        // Paint our string on top of it
        pe.Graphics.DrawString($"Clicked {_counter} times", Font, Brushes.Purple, new PointF(3, 3));
    }
    
    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    
        ' Draw the control
        MyBase.OnPaint(e)
    
        ' Paint our string on top of it
        e.Graphics.DrawString($"Clicked {_counter} times", Font, Brushes.Purple, New PointF(3, 3))
    
    End Sub
    
  6. Überschreiben Sie zuletzt die OnClick-Methode. Diese Methode wird jedes Mal aufgerufen, wenn das Steuerelement gedrückt wird. Der Code erhöht den Zähler und ruft dann die Invalidate-Methode auf, die das Neuzeichnen des Steuerelements erzwingt.

    protected override void OnClick(EventArgs e)
    {
        // Increase the counter and redraw the control
        _counter++;
        Invalidate();
    
        // Call the base method to invoke the Click event
        base.OnClick(e);
    }
    
    Protected Overrides Sub OnClick(e As EventArgs)
    
        ' Increase the counter and redraw the control
        _counter += 1
        Invalidate()
    
        ' Call the base method to invoke the Click event
        MyBase.OnClick(e)
    
    End Sub
    

    Der endgültige Code sollte wie der folgende Codeausschnitt aussehen:

    public partial class CustomControl1 : Button
    {
        private int _counter = 0;
    
        public CustomControl1()
        {
            InitializeComponent();
        }
    
        protected override void OnPaint(PaintEventArgs pe)
        {
            // Draw the control
            base.OnPaint(pe);
    
            // Paint our string on top of it
            pe.Graphics.DrawString($"Clicked {_counter} times", Font, Brushes.Purple, new PointF(3, 3));
        }
    
        protected override void OnClick(EventArgs e)
        {
            // Increase the counter and redraw the control
            _counter++;
            Invalidate();
    
            // Call the base method to invoke the Click event
            base.OnClick(e);
        }
    }
    
    Public Class CustomControl1
    
        Private _counter As Integer = 0
    
        Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    
            ' Draw the control
            MyBase.OnPaint(e)
    
            ' Paint our string on top of it
            e.Graphics.DrawString($"Clicked {_counter} times", Font, Brushes.Purple, New PointF(3, 3))
    
        End Sub
    
        Protected Overrides Sub OnClick(e As EventArgs)
    
            ' Increase the counter and redraw the control
            _counter += 1
            Invalidate()
    
            ' Call the base method to invoke the Click event
            MyBase.OnClick(e)
    
        End Sub
    
    End Class
    

Nachdem das Steuerelement erstellt wurde, kompilieren Sie das Projekt, um das Toolbox- Fenster mit dem neuen Steuerelement aufzufüllen. Öffnen Sie einen Formular-Designer, und ziehen Sie das Steuerelement auf das Formular. Führen Sie das Projekt aus, und drücken Sie die Schaltfläche. Jedes Drücken erhöht die Anzahl der Klicks um eins. Die Gesamtklicks werden als Text über der Schaltfläche gedruckt.

Visual Studio Toolbox-Fenster für Windows Forms mit einem benutzerdefinierten Steuerelement.