Vytvoření ovládacího prvku Sady nástrojů Windows Forms
Šablona položky ovládacího prvku sady nástrojů Windows Forms, která je součástí nástrojů Visual Studio Extensibility Tools (VSSDK), umožňuje vytvořit ovládací prvek sady nástrojů, který se automaticky přidá při instalaci rozšíření. Tento návod ukazuje, jak pomocí šablony vytvořit jednoduchý ovládací prvek čítače, který můžete distribuovat ostatním uživatelům.
Vytvořit ovládací prvek Panelu nástrojů
Šablona ovládacího prvku Toolboxu Windows Forms vytvoří uživatelský ovládací prvek bez přednastavení a poskytuje veškeré funkce, které jsou nutné k přidání ovládacího prvku do Sady nástrojů.
Vytvoření rozšíření pomocí ovládacího prvku Windows Forms Toolbox
Vytvořte projekt VSIX s názvem
MyWinFormsControl
. Šablonu projektu VSIX najdete v dialogovém okně Nový projekt vyhledáním "vsix".Po otevření projektu přidejte ovládací prvek panelu nástrojů Windows Forms šablonu položky s názvem
Counter
. V Průzkumníku řešení klikněte pravým tlačítkem na projektový uzel a vyberte Přidat>Nová položka. V dialogovém okně Přidat novou položku přejděte na Visual C#>Extensibility a vyberte Ovládací prvek Sady nástrojů Windows FormsTím se přidá uživatelský ovládací prvek,
ProvideToolboxControlAttribute
RegistrationAttribute pro umístění ovládacího prvku do panelu nástrojůa položku Microsoft.VisualStudio.ToolboxControl Asset v manifestu VSIX pro nasazení.
Vytvoření uživatelského rozhraní pro ovládací prvek
Ovládací prvek Counter
vyžaduje dva podřízené ovládací prvky: Label k zobrazení aktuálního počtu a Button k resetování počtu na 0. Nejsou vyžadovány žádné další podřízené ovládací prvky, protože volající programově zvýší čítač.
Sestavení uživatelského rozhraní
V Průzkumníku řešenídvojklikem na Counter.cs ho otevřete v návrháři.
Odeberte tlačítko Klikněte sem!, které se do panelu nástrojů Windows Forms přidává výchozím nastavením při vložení šablony položky ovládacího prvku.
Ze panelu nástrojůpřetáhněte ovládací prvek
Label
a potom pod něj ovládací prvekButton
na návrhovou plochu.Změňte velikost celkového uživatelského ovládacího prvku na 150, 50 pixelů a změňte velikost ovládacího prvku tlačítka na 50, 20 pixelů.
V okně Vlastnosti nastavte následující hodnoty ovládacích prvků na návrhové ploše.
Řízení Vlastnost Hodnota Label1
Text "" Button1
název btnReset Button1
Text Obnovit
Kódování uživatelského ovládacího prvku
Ovládací prvek Counter
zpřístupní metodu pro zvýšení čítače, událost, která se má zvýšit při každém zvýšení čítače, tlačítko Obnovit a tři vlastnosti pro uložení aktuálního počtu, zobrazovaného textu a toho, jestli se má zobrazit nebo skrýt tlačítko Obnovit. Atribut ProvideToolboxControl
určuje, kde se v sadě nástrojů zobrazí ovládací prvek Counter
.
Kódování uživatelského ovládacího prvku
Poklikáním na formulář otevřete obslužnou rutinu události načtení v okně kódu.
Nad metodou obslužné rutiny události vytvořte ve třídě ovládacího prvku proměnnou typu integer pro uložení hodnoty čítače a proměnnou typu string pro uložení zobrazovaného textu, jak je znázorněno v následujícím příkladu.
int currentValue; string displayText;
Vytvořte následující deklarace veřejných vlastností.
public int Value { get { return currentValue; } } public string Message { get { return displayText; } set { displayText = value; } } public bool ShowReset { get { return btnReset.Visible; } set { btnReset.Visible = value; } }
Uživatelé mají přístup k těmto vlastnostem, aby získali a nastavili zobrazovaný text ukazatele a zobrazili nebo skryli tlačítko Obnovit. Volající můžou získat aktuální hodnotu vlastnosti
Value
jen pro čtení, ale nemůžou ji nastavit přímo.Do události
Load
ovládacího prvku vložte následující kód.private void Counter_Load(object sender, EventArgs e) { currentValue = 0; label1.Text = Message + Value; }
Nastavení popisku textu v události Load umožňuje načtení cílových vlastností před jejich použitím hodnot. Nastavení Popisek v konstruktoru by vedlo k prázdnému Popisek.
Vytvořte následující veřejnou metodu pro zvýšení čítače.
public void Increment() { currentValue++; label1.Text = displayText + Value; Incremented(this, EventArgs.Empty); }
Přidejte deklaraci události
Incremented
do třídy ovládacího prvku.public event EventHandler Incremented;
Volající můžou do této události přidávat obslužné rutiny, aby reagovali na změny v hodnotě čítače.
Vraťte se do návrhového zobrazení a poklikejte na tlačítko Obnovit a vygenerujte obslužnou rutinu události
btnReset_Click
. Potom ho vyplňte, jak je znázorněno v následujícím příkladu.private void btnReset_Click(object sender, EventArgs e) { currentValue = 0; label1.Text = displayText + Value; }
Bezprostředně nad definicí třídy v deklaraci atributu
ProvideToolboxControl
změňte hodnotu prvního parametru z"MyWinFormsControl.Counter"
na"General"
. Tím se nastaví název skupiny položek, která bude hostitelem ovládacího prvku v Panel nástrojů.Následující příklad ukazuje atribut
ProvideToolboxControl
a upravenou definici třídy.[ProvideToolboxControl("General", false)] public partial class Counter : UserControl
Otestování ovládacího prvku
Pokud chcete otestovat ovládací prvek Toolbox, nejprve ho otestujte ve vývojovém prostředí a pak ho otestujte v kompilované aplikaci.
Otestování ovládacího prvku
Stiskněte kombinaci kláves F5pro spuštění ladění.
Tento příkaz sestaví projekt a otevře druhou experimentální instanci sady Visual Studio, která má nainstalovaný ovládací prvek.
V experimentální instanci sady Visual Studio vytvořte projekt aplikace Windows Forms.
V Průzkumníku řešenídvojím kliknutím na Form1.cs je otevřete v návrháři, pokud ještě nejsou otevřené.
V panelu nástrojůby se měl ovládací prvek
Counter
zobrazit v části Obecné.Přetáhněte ovládací prvek
Counter
do formuláře a vyberte ho. VlastnostiValue
,Message
aShowReset
se zobrazí v okně Vlastnosti spolu s vlastnostmi zděděnými z UserControl.Nastavte vlastnost
Message
naCount:
.Přetáhněte ovládací prvek Button do formuláře a potom nastavte vlastnosti názvu a textu tlačítka na
Test
.Poklikáním na tlačítko otevřete Form1.cs v zobrazení kódu a vytvořte obslužnou rutinu kliknutí.
V obslužné rutině kliknutí zavolejte
counter1.Increment()
.Ve funkci konstruktoru za voláním
InitializeComponent
zadejtecounter1``.``Incremented +=
a stiskněte Tab dvakrát.Visual Studio vygeneruje obslužnou rutinu na úrovni formuláře pro událost
counter1.Incremented
.Zvýrazněte příkaz
Throw
v obslužné rutině události, zadejtembox
a poté stiskněte dvakrát klávesu Tab () pro vygenerování okna se zprávou z kódu mbox.Na další řádek přidejte následující blok
if
/else
, který nastaví viditelnost tlačítka Obnovit.if (counter1.Value < 5) counter1.ShowReset = false; else counter1.ShowReset = true;
Stiskněte F5.
Otevře se formulář. Ovládací prvek
Counter
zobrazí následující text.počet : 0
Vyberte test.
Čítač se inkrementuje a Visual Studio zobrazí dialogové okno.
Zavřete okno zprávy.
Tlačítko Obnovit zmizí.
Vyberte Test, dokud čítač nedosáhne 5, a pokaždé zavřete okna s oznámením.
Znovu se zobrazí tlačítko Obnovit.
Vyberte Obnovit.
Čítač se resetuje na 0.
Další kroky
Když sestavíte ovládací prvek Toolbox, Visual Studio vytvoří soubor s názvem ProjectName.vsix ve složce \bin\debug\ projektu. Ovládací prvek můžete nasadit tak, že nahrajete soubor .vsix do sítě nebo na web. Když uživatel otevře soubor .vsix, ovládací prvek se nainstaluje a přidá do sady nástrojů Visual Studio Toolbox na počítači uživatele. Případně můžete nahrát soubor .vsix do Visual Studio Marketplace, aby ho uživatelé mohli najít v dialogovém okně Tools>Extensions and Updates.