Návod: Dědění z ovládacího prvku Windows Forms pomocí jazyka C#
V jazyce C# můžete vytvářet výkonné vlastní ovládací prvky dědičností . Prostřednictvím dědičnosti můžete vytvářet ovládací prvky, které si zachovají všechny základní funkce standardních ovládacích prvků Windows Forms, ale také zahrnují vlastní funkce. V tomto návodu vytvoříte jednoduchý zděděný ovládací prvek s názvem ValueButton
. Toto tlačítko dědí funkce ze standardního ovládacího prvku Windows Forms Button a zpřístupní vlastní vlastnost s názvem ButtonValue
.
Vytvoření projektu
Při vytváření nového projektu zadáte jeho název, abyste nastavili kořenový obor názvů, název sestavení a název projektu a zajistili, že výchozí komponenta bude ve správném oboru názvů.
Vytvoření knihovny ovládacích prvků ValueButtonLib a ovládacího prvku ValueButton
V sadě Visual Studio vytvořte novou knihovnu ovládacích prvků Windows Forms projektu a pojmenujte ji ValueButtonLib.
Název projektu,
ValueButtonLib
, je také přiřazen ke kořenovému oboru názvů ve výchozím nastavení. Kořenový obor názvů se používá ke specifikaci názvů komponent v sestavení. Pokud například dvě sestavení poskytují součásti s názvemValueButton
, můžete určitValueButton
komponentu pomocíValueButtonLib.ValueButton
. Další informace naleznete v tématu Jmenné prostory.V Průzkumníku řešeníklikněte pravým tlačítkem myši na UserControl1.csa potom v místní nabídce zvolte Přejmenovat. Změňte název souboru na ValueButton.cs. Když se zobrazí dotaz, jestli chcete přejmenovat všechny odkazy na prvek kódu
UserControl1
, klikněte na tlačítko Ano.V Průzkumník řešeníklikněte pravým tlačítkem na ValueButton.cs a vyberte Zobrazit kód .
Vyhledejte řádek příkazu
class
,public partial class ValueButton
a změňte typ, ze kterého tento ovládací prvek dědí z UserControl na Button. To umožňuje zděděným ovládacím prvkům dědit všechny funkce ovládacího prvku Button.V Průzkumníku řešeníotevřete uzel ValueButton.cs a zobrazte soubor kódu vygenerovaný návrhářem ValueButton.Designer.cs. Otevřete tento soubor v editoru kódu.
Vyhledejte
InitializeComponent
metodu a odeberte řádek, který přiřadí AutoScaleMode vlastnost. Tato vlastnost v ovládacím prvku Button neexistuje.V nabídce Soubor zvolte Uložit vše a projekt uložte.
Poznámka
Vizuální návrhář už není k dispozici. Vzhledem k tomu, že ovládací prvek Button provádí vlastní vykreslování, nemůžete změnit jeho vzhled v návrhovém prostředí. Jeho vizuální reprezentace bude přesně stejná jako třída, ze které dědí (tj. Button), pokud není v kódu upravena. Do návrhové plochy můžete přidat komponenty, které nemají žádné prvky uživatelského rozhraní.
Přidejte vlastnost do zděděného ovládacího prvku
Jedním z možných použití zděděných ovládacích prvků Windows Forms je vytváření ovládacích prvků, které jsou identické ve vzhledu a chování standardních ovládacích prvků Windows Forms, ale zveřejňují vlastní vlastnosti. V této části přidáte do ovládacího prvku vlastnost s názvem ButtonValue
.
Přidejte vlastnost Value
Ve Průzkumníku řešeníklepněte pravým tlačítkem na ValueButton.csa potom v místní nabídce klepněte na příkaz Zobrazit kód.
Vyhledejte příkaz
class
. Bezprostředně za{
zadejte následující kód:// Creates the private variable that will store the value of your // property. private int varValue; // Declares the property. public int ButtonValue { // Sets the method for retrieving the value of your property. get { return varValue; } // Sets the method for setting the value of your property. set { varValue = value; } }
Tento kód nastaví metody, pomocí kterých je vlastnost
ButtonValue
uložena a načtena. Příkazget
nastaví hodnotu vrácenou na hodnotu uloženou v privátní proměnnévarValue
a příkazset
nastaví hodnotu privátní proměnné pomocí klíčového slovavalue
.V nabídce Soubor zvolte Uložit vše a projekt uložte.
Otestování ovládacího prvku
Ovládací prvky nejsou samostatné projekty; musí být hostované v kontejneru. Abyste mohli váš ovládací prvek otestovat, musíte zadat testovací projekt, ve kterém se má spustit. Ovládací prvek musíte také zpřístupnit testovacímu projektu tak, že ho sestavíte (kompilujete). V této části sestavíte ovládací prvek a otestujete ho ve formuláři Windows Form.
Sestavení ovládacího prvku
V nabídce Sestavení klikněte na Sestavit řešení. Sestavení by mělo být úspěšné bez chyb kompilátoru nebo upozornění.
Vytvoření testovacího projektu
V nabídce soubor
přejděte na Přidat a potom kliknutím naNový projekt otevřete dialogové oknoPřidat nový projekt .Vyberte uzel Windows, který je pod uzlem Visual C#, a klikněte na aplikaci Windows Forms .
Do pole Název zadejte Test.
V Průzkumníku řešeníklikněte pravým tlačítkem myši na uzel Reference pro váš testovací projekt a potom v místní nabídce vyberte Přidat odkaz a zobrazte dialogové okno Přidat odkaz.
Klikněte na kartu označenou "Projekty". Váš projekt ValueButtonLib bude uveden v části Název projektu. Dvojklikněte na projekt, abyste přidali odkaz na testovací projekt.
V Průzkumníku řešení
klikněte pravým tlačítkem na Test a vyberte Sestavení .
Přidání ovládacího prvku do formuláře
V Průzkumníku řešeníklikněte pravým tlačítkem na Form1.cs a v místní nabídce zvolte Návrhář zobrazení.
Vpanelu nástrojů
vyberte Součásti ValueButtonLib . Poklikejte na ValueButton.Na formuláři se zobrazí ValueButton.
Kliknutím pravým tlačítkem myši na ValueButton a v kontextové nabídce vyberte Vlastnosti.
V okně Vlastnosti zkontrolujte vlastnosti tohoto ovládacího prvku. Všimněte si, že jsou identické s vlastnostmi vystavenými standardním tlačítkem, s tím rozdílem, že existuje další vlastnost ButtonValue.
Vlastnost ButtonValue nastavte na 5.
Na kartě
Všechny formuláře Windows Forms panelu nástrojůpoklikejte na Popisek a přidejte do formuláře ovládací prvek. Přemísťujte popisek na střed formuláře.
Dvakrát klikněte na
valueButton1
.Editor kódu se otevře na události
valueButton1_Click
.Vložte následující řádek kódu.
label1.Text = valueButton1.ButtonValue.ToString();
V Průzkumníku řešeníklikněte pravým tlačítkem na Testa v místní nabídce zvolte Nastavit jako spouštěcí projekt.
V nabídce Ladění zvolte Spustit ladění.
Form1
se zobrazí.Klikněte na
valueButton1
.Číslice 5 se zobrazí v
label1
, což ukazuje, žeButtonValue
vlastnost zděděného ovládacího prvku byla předánalabel1
prostřednictvím metodyvalueButton1_Click
. Proto vášValueButton
ovládací prvek dědí všechny funkce standardního tlačítka Windows Forms, ale zveřejňuje další vlastní vlastnost.
Viz také
.NET Desktop feedback