Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Als u meer functies wilt toevoegen aan een bestaand besturingselement, kunt u een besturingselement maken dat overkomt van een bestaand besturingselement. Het nieuwe besturingselement bevat alle mogelijkheden en het visuele aspect van het basisbeheer, maar biedt u de mogelijkheid om dit uit te breiden. Als u bijvoorbeeld een besturingselement hebt gemaakt dat Buttonover neemt, ziet het nieuwe besturingselement eruit en fungeert deze precies als een knop. U kunt nieuwe methoden en eigenschappen maken om het gedrag van het besturingselement aan te passen. Met sommige besturingselementen kunt u de methode OnPaint overschrijven om de manier waarop het besturingselement eruitziet te wijzigen.
Aangepast besturingselement toevoegen aan project
Nadat u een nieuw project hebt gemaakt, gebruikt u de Visual Studio-sjablonen om een gebruikersbeheer te maken. De volgende stappen laten zien hoe u een gebruikersbeheer toevoegt aan uw project:
Zoek in Visual Studio het paneel Projectverkenner. Klik met de rechtermuisknop op het project en kiesGebruikersbesturingselement>.
Selecteer Aangepast besturingselement (Windows Forms).
Typ in het vak Naam een naam voor het gebruikersbeheer. Visual Studio biedt een standaard en unieke naam die u kunt gebruiken. Druk vervolgens op toevoegen.
Druk in de ontwerpmodus van het besturingselement op F7 of klik op de koppeling naar codeweergave .
Aanbeveling
U kunt ook met de rechtermuisknop op het bestand klikken in het Solution Explorer-venster en Code weergeven selecteren.
Wijzig het aangepaste besturingselement in een knop
In deze sectie leert u hoe u een aangepast element wijzigt in een knop die het aantal klikken telt en weergeeft.
Nadat u een aangepast besturingselement hebt toegevoegd aan uw project met de naam CustomControl1
, moet de ontwerpfunctie voor besturingselementen worden geopend. Als het niet is, dubbelklik op het besturingselement in de Solution Explorer. Volg deze stappen om het aangepaste besturingselement te converteren naar een besturingselement dat erft van Button
en het uitbreidt:
Terwijl de ontwerpfunctie voor besturingselementen is geopend, drukt u op F7 of klikt u met de rechtermuisknop op het ontwerpvenster en selecteert u Code weergeven.
In de code-editor ziet u een klassedefinitie:
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
Wijzig de basisklasse van
Control
inButton
.Belangrijk
Als u Visual Basicgebruikt, wordt de basisklasse gedefinieerd in het *.designer.vb-bestand van uw controle. De basisklasse die in Visual Basic moet worden gebruikt, is
System.Windows.Forms.Button
.Voeg een variabele met klassebereik toe met de naam
_counter
.private int _counter = 0;
Private _counter As Integer = 0
Overschrijf de methode
OnPaint
. Met deze methode wordt het besturingselement tekend. Het besturingselement moet een tekenreeks boven op de knop tekenen, dus u moet eerst deOnPaint
methode van de basisklasse aanroepen en vervolgens een tekenreeks tekenen.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
Ten slotte overschrijft u de methode
OnClick
. Deze methode wordt aangeroepen telkens wanneer het besturingselement wordt ingedrukt. De code gaat de teller verhogen en vervolgens deInvalidate
methode aanroepen, waardoor het besturingselement zichzelf opnieuw moet tekenen.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
De uiteindelijke code moet eruitzien als het volgende codefragment:
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 het besturingselement is gemaakt, compileert u het project om het Werkset venster te vullen met het nieuwe besturingselement. Open een formulierontwerper en sleep het besturingselement naar het formulier. Voer het project uit en druk op de knop. Elke druk verhoogt het aantal klikken met één. De totale klikken worden afgedrukt als tekst boven aan de knop.
.NET Desktop feedback