Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du vill lägga till fler funktioner i en befintlig kontroll kan du skapa en kontroll som ärver från en befintlig kontroll. Den nya kontrollen innehåller alla funktioner och visuella aspekter av baskontrollen, men ger dig möjlighet att utöka den. Om du till exempel har skapat en kontroll som ärver Buttonskulle den nya kontrollen se ut och fungera exakt som en knapp. Du kan skapa nya metoder och egenskaper för att anpassa kontrollens beteende. Med vissa kontroller kan du åsidosätta metoden OnPaint för att ändra hur kontrollen ser ut.
Lägga till en anpassad kontroll i ett projekt
När du har skapat ett nytt projekt använder du Visual Studio-mallarna för att skapa en användarkontroll. Följande steg visar hur du lägger till en användarkontroll i projektet:
Leta reda på fönstret Project Explorer i Visual Studio. Högerklicka på projektet och välj Lägg till>användarkontroll.
              
              
            
Välj objektet Anpassad kontroll (Windows-formulär).
I rutan Namn anger du ett namn för användarkontrollen. Visual Studio innehåller ett standardnamn och ett unikt namn som du kan använda. Tryck sedan på Lägg till.
              
              
            
I designläge för kontrollen trycker du på F7 eller klickar på länken växla till kodvy .
Tips/Råd
Du kan också högerklicka på filen i Solution Explorer-fönstret och välja Visa kod.
Ändra den anpassade kontrollen till en knapp
I det här avsnittet får du lära dig hur du ändrar en anpassad kontroll till en knapp som räknas och visar hur många gånger den klickas.
              
              
              
              
            
När du lägger till en anpassad kontroll i ditt projekt med namnet CustomControl1, bör kontrolldesignern öppnas. Om det inte är fallet, dubbelklickar du på kontrollen i Solution Explorer. Följ dessa steg för att konvertera den anpassade kontrollen till en kontroll som ärver från Button och utökar den:
När kontrolldesignern har öppnats trycker du på F7 eller högerklickar på designerfönstret och väljer Visa kod.
I kodredigeraren bör du se en klassdefinition:
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Ändra basklassen från
ControltillButton.Viktigt!
Om du använder Visual Basicdefinieras basklassen i *.designer.vb-filen för kontrollen. Basklassen som ska användas i Visual Basic är
System.Windows.Forms.Button.Lägg till en klassvariabel med namnet
_counter.private int _counter = 0;Private _counter As Integer = 0Åsidosätt metoden
OnPaint. Den här metoden ritar styrningen. Kontrollen bör rita en sträng ovanpå knappen, så du måste anropa basklassensOnPaint-metoden först och sedan rita en sträng.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 SubSlutligen åsidosätter du metoden
OnClick. Den här metoden anropas varje gång kontrollen trycks in. Koden kommer att öka räknaren och sedan anropa metodenInvalidate, vilket tvingar kontrollen att rita om sig själv.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 SubDen slutliga koden bör se ut som följande kodfragment:
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
Nu när kontrollen har skapats kompilerar du projektet för att fylla i fönstret Toolbox med den nya kontrollen. Öppna en formulärdesigner och dra kontrollen till formuläret. Kör projektet och tryck på knappen. Varje tryck ökar antalet klick med en. Det totala antalet klick skrivs ut som text överst på knappen.
              
              
              
              
            
.NET Desktop feedback