Dela via


Skapa ny kontrollöversikt

Med Windows Forms kan du skapa nya kontroller eller ändra befintliga kontroller genom arv. Den här artikeln belyser skillnaderna mellan olika sätt att skapa nya kontroller och ger dig information om hur du väljer en viss typ av kontroll för projektet.

Baskontrollklass

Klassen Control är basklassen för Windows Forms-kontroller. Den tillhandahåller den infrastruktur som krävs för visuell visning i Windows Forms-program och tillhandahåller följande funktioner:

  • Visar ett fönsterhandtag.
  • Hanterar meddelanderoutning.
  • Innehåller mus- och tangentbordshändelser och många andra användargränssnittshändelser.
  • Innehåller avancerade layoutfunktioner.
  • Innehåller många egenskaper som är specifika för visuell visning, till exempel ForeColor, BackColor, Heightoch Width.

Eftersom så mycket av infrastrukturen tillhandahålls av basklassen är det relativt enkelt att utveckla egna Windows Forms-kontroller.

Skapa din egen kontroll

Det finns tre typer av anpassade kontroller som du kan skapa: användarkontroller, utökade kontroller och anpassade kontroller. I följande tabell kan du bestämma vilken typ av kontroll du ska skapa:

Om... Skapa en ...
  • Du vill kombinera funktionerna i flera Windows Forms-kontroller till en enda återanvändbar enhet.
Utforma en användarkontroll genom att ärva från System.Windows.Forms.UserControl.
  • De flesta funktioner som du behöver är redan identiska med en befintlig Windows Forms-kontroll.
  • Du behöver inte ett anpassat grafiskt användargränssnitt, eller så vill du utforma ett nytt grafiskt användargränssnitt för en befintlig kontroll.
Utöka en kontroll genom att ärva från en specifik Windows Forms-kontroll.
  • Du vill tillhandahålla en anpassad grafisk representation av kontrollen.
  • Du måste implementera anpassade funktioner som inte är tillgängliga via standardkontroller.
Skapa en anpassad kontroll genom att ärva från System.Windows.Forms.Control.

Användarkontroller

En användarkontroll är en samling Windows Forms-kontroller som visas som en enda kontroll för konsumenten. Den här typen av kontroll kallas för en sammansatt kontroll. De inneslutna kontrollerna kallas konstituerande kontroller.

En användarkontroll innehåller alla inbyggda funktioner som är associerade med var och en av de inneslutna Windows Forms-kontrollerna och gör att du selektivt kan exponera och binda deras egenskaper. En användarkontroll ger också en hel del standardfunktioner för tangentbordshantering utan extra utvecklingsarbete från din sida.

En användarkontroll kan till exempel skapas för att visa kundadressdata från en databas. Den här kontrollen skulle innehålla en DataGridView kontroll för att visa databasfälten, en BindingSource för att hantera bindning till en datakälla och en BindingNavigator kontroll för att gå igenom posterna. Du kan selektivt exponera databindningsegenskaper och du kan paketera och återanvända hela kontrollen från program till program. Ett exempel på den här typen av användarkontroll finns i How to: Apply Attributes in Windows Forms Controls (Använda attribut i Windows Forms Controls).

Mer information finns i Översikt över användarkontroll.

Utökade kontroller

Du kan härleda en ärvd kontroll från alla befintliga Windows Forms-kontroller. Med den här metoden kan du behålla alla inbyggda funktioner i en Windows Forms-kontroll och sedan utöka den funktionen genom att lägga till anpassade egenskaper, metoder eller andra funktioner. Med det här alternativet kan du åsidosätta baskontrollens färglogik och sedan utöka användargränssnittet genom att ändra dess utseende.

Du kan till exempel skapa en kontroll som härleds från den Button kontroll som spårar hur många gånger en användare har klickat på den.

I vissa kontroller kan du också lägga till ett anpassat utseende i det grafiska användargränssnittet för kontrollen genom att åsidosätta metoden OnPaint för basklassen. För en utökad knapp som spårar klick kan du åsidosätta metoden OnPaint för att anropa basimplementeringen av OnPaintoch sedan rita antalet klick i ett hörn av Button-kontrollens klientområde.

Ett exempel på hur du utökar en kontroll finns i Utöka en befintlig kontroll.

Anpassade kontroller

Ett annat sätt att skapa en kontroll är att skapa en i stort sett från början genom att ärva från Control. Klassen Control innehåller alla grundläggande funktioner som krävs av kontroller, inklusive händelser för mus- och tangentbordshantering, men inga kontrollspecifika funktioner eller grafiskt gränssnitt.

Att skapa en kontroll genom att ärva från klassen Control kräver mer eftertanke och arbete än att ärva från UserControl eller en befintlig Windows Forms-kontroll. Eftersom det finns en hel del implementering kvar för dig kan din kontroll ha större flexibilitet än en sammansatt eller utökad kontroll, och du kan anpassa din kontroll efter dina exakta behov.

Om du vill implementera en anpassad kontroll måste du skriva kod för OnPaint kontrollens metod, som styr hur kontrollen ritas visuellt. Du måste också skriva några funktionsspecifika beteenden för din kontroll. Du kan också åsidosätta metoden WndProc och hantera Windows-meddelanden direkt. Det här är det mest kraftfulla sättet att skapa en kontroll, men för att kunna använda den här tekniken effektivt måste du känna till Microsoft Win32-API:et.

Ett exempel på en anpassad kontroll är en klockkontroll som duplicerar utseendet och beteendet för en analog klocka. Anpassad målning anropas för att få klockans visare att röra sig som en följd av Tick händelser från en intern Timer komponent.

Mer information finns i Skapa en enkel anpassad kontroll.

ActiveX-kontroller

Även om Windows Forms-infrastrukturen har optimerats för att vara värd för Windows Forms-kontroller kan du fortfarande använda ActiveX-kontroller. Det finns stöd för den här uppgiften i Visual Studio. Mer information finns i Så här lägger du till ActiveX-kontroller i Windows-formulär.

Varning

ActiveX-kontroller stöds inte fullt ut på .NET. ActiveX-kontroller stöds fortfarande fullt ut i .NET Framework.

Anpassad designupplevelse

Om du behöver implementera en anpassad designtidsupplevelse kan du skapa en egen designer. För sammansatta kontroller härleder du din anpassade designerklass från ParentControlDesigner- eller DocumentDesigner-klasserna. För utökade och anpassade kontroller härleder du din anpassade designerklass från klassen ControlDesigner.

Använd DesignerAttribute för att associera kontrollen med designern.

Följande information är inaktuell, men den kan hjälpa dig.