Sdílet prostřednictvím


Rozšíření existujícího ovládacího prvku

Pokud chcete do existujícího ovládacího prvku přidat další funkce, můžete vytvořit ovládací prvek, který dědí z existujícího ovládacího prvku. Nový ovládací prvek obsahuje všechny možnosti a vizuální aspekt základního ovládacího prvku, ale dává vám příležitost ho rozšířit. Pokud jste například vytvořili ovládací prvek, který dědí Button, nový ovládací prvek by vypadal a fungoval přesně jako tlačítko. Můžete vytvořit nové metody a vlastnosti pro přizpůsobení chování ovládacího prvku. Některé ovládací prvky umožňují přepsat metodu OnPaint , aby se změnil vzhled ovládacího prvku.

Přidání vlastního ovládacího prvku do projektu

Po vytvoření nového projektu pomocí šablon sady Visual Studio vytvořte uživatelský ovládací prvek. Následující kroky ukazují, jak do projektu přidat uživatelský ovládací prvek:

  1. V sadě Visual Studio vyhledejte podokno Průzkumníka projektů. Klikněte pravým tlačítkem myši na projekt a zvolte Přidat>třídu.

    Klikněte pravým tlačítkem na Průzkumníka řešení sady Visual Studio a přidejte uživatelský ovládací prvek do projektu model Windows Forms.

  2. Do pole Název zadejte název uživatelského ovládacího prvku. Visual Studio poskytuje výchozí a jedinečný název, který můžete použít. Potom stiskněte Přidat.

    Dialogové okno Přidat položku v sadě Visual Studio pro model Windows Forms

Po vytvoření uživatelského ovládacího prvku visual Studio otevře editor kódu pro ovládací prvek. Dalším krokem je převést tento vlastní ovládací prvek na tlačítko a rozšířit ho.

Změna vlastního ovládacího prvku na tlačítko

V této části se dozvíte, jak změnit vlastní ovládací prvek na tlačítko, které se počítá a zobrazuje počet kliknutí.

Model Windows Forms pro vlastní ovládací prvek .NET

Po přidání vlastního ovládacího prvku do projektu s názvem CustomControl1by se měl otevřít návrhář ovládacího prvku. Pokud není, poklikejte na ovládací prvek v Průzkumník řešení. Pomocí těchto kroků převedete vlastní ovládací prvek na ovládací prvek, který zdědí Button a rozšíří ho:

  1. Otevřete návrháře ovládacích prvků, stiskněte klávesu F7 nebo klikněte pravým tlačítkem myši na okno návrháře a vyberte Zobrazit kód.

  2. V editoru kódu byste měli vidět definici třídy:

    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. Nejprve přidejte proměnnou s oborem třídy s názvem _counter.

    private int _counter = 0;
    
    Private _counter As Integer = 0
    
  4. Přepište metodu OnPaint . Tato metoda nakreslí ovládací prvek. Ovládací prvek by měl nakreslit řetězec nad tlačítkem, takže musíte nejprve volat metodu základní třídy OnPaint a pak nakreslit řetězec.

    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
    
  5. Nakonec přepište metodu OnClick . Tato metoda se volá při každém stisknutí ovládacího prvku. Kód zvýší čítač a pak zavolá metodu Invalidate , která vynutí ovládací prvek překreslit sám.

    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
    

    Konečný kód by měl vypadat jako následující fragment kódu:

    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
    

Teď, když je ovládací prvek vytvořen, zkompilujte projekt tak, aby se okno Panel nástrojů naplnilo novým ovládacím prvku. Otevřete návrháře formulářů a přetáhněte ovládací prvek do formuláře. Když projekt spustíte a kliknete na tlačítko, uvidíte, že spočítá kliknutí a vykreslí text v horní části tlačítka.

Okno sady nástrojů sady Visual Studio pro model Windows Forms zobrazující vlastní ovládací prvek