Yksinkertaiset komponentit - Luento 5
Luodaan yksinkertainen oma komponentti.
- Luento 5 (Youtube)
- tjlahton2012-02-08_1549.mp4 48.9 Mt
- tjlahton2012-02-08_1549.wmv 67.9 Mt
- tjlahton2012-02-08_1549.mp3 25.1 Mt
Komponentit
Hyvä ohje komponenteista löytyy artikkelista Architecture and Design of Windows Forms Custom Controls
- Komponenteilla saa jaettua ohjelmansa pienempiin osasiin ja modulaarisemmaksi.
- Komponentti on lähes sama asia kuin luokka
- Kapselointi
- Perintä
- Ohjelmointirajapinta
- Tila
- Introspection
- Persistence
- Pluggability
- IDE-yhteensopivuus
- Komponentin voi luoda kolmella tavalla
- "Tyhjästä" perimällä System.Windows.Forms.Control
- Perimällä olemassaolevasta kontrollista
- Koostamalla useammasta olemassaolevasta kontrollista (user control)
- Oman kontrollin (komponentin) luomisessa on seuraavat vaiheet:
- Luodaan kontrollista kirjasto (Windows Control Library)
- Määritellään ominaisuudet (properties)
- Ohjelmoidaan metodit
- Ohjelmoidaan tapahtumankäsittelijät
- Määritellään design tilan (Visual Studio) ominaisuudet
// propertyn properties-listauksen kustomointia [Category("Autolaskuri"), Description("Tähän autolaskurin kuvaus"), DefaultValue(0), Browsable(true)] public int Laskuri { get { return pLaskuri; } set { if (value >= 0) pLaskuri = value; } } // seuraavalla testataan onko komponentti design-moodissa // ei toimi kontrollin konstruktorissa eikä aina muulloinkaan... if (this.DesignMode) return;
Identifying the Run-Time and the Design Mode
Jos propertyn palautustyyppi on joku muu kuin merkkijono tai numero niin pitää määritellä kaksi lisäfunktiota jotka ovat muotoa:
// antaa propertylle sen oletusarvon Reset<propertyn_nimi> // vertaa annettua arvoa oletusarvoon ShouldSerialize<propertyn_nimi>
esimerkiksi
public void ResetOmaVari() { OmaVari = Color.Blue; } public bool ShouldSerializeOmaVari() { return OmaVari != Color.Blue; }
Omien kontrollien kaataessa Visual Studion on virheiden etsiminen todella hankalaa. Jotain vinkkiä saa artikkeleista: Good Way to Debug Visual Studio Designer Errors ja Debugging Design-Time Controls
Lisätietoa
- Creating a Custom Control Derived from a TextBox Control
- WinForms Data Validation
- Architecture and Design of Windows Forms Custom Controls
- Extending Windows Forms with a Custom Validation Component Library
- Custom Controls in Visual C# .NET
- How to: Test the Run-Time Behavior of a UserControl
- How to: Inherit from Existing Windows Forms Controls
- How to: Inherit from the UserControl Class
- How to: Author Controls for Windows Forms
- Control Type Recommendations
- Varieties of Custom Controls
- How to: Create a Windows Forms Control That Takes Advantage of Design-Time Features
- How to: Display a Control in the Choose Toolbox Items Dialog Box
- Walkthrough: Creating a Windows Forms Control That Takes Advantage of Visual Studio Design-Time Features
- Custom Design-time Control Features in Visual Studio .NET
- Building Windows Forms Controls and Components with Rich Design-Time Features
- Creating a Windows Form User Control
- Identifying the Run-Time and the Design Mode
- User Controls Custom Properties
Käyttäjien kommentit