Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Jak jste si všimli při interakci s návrhářem model Windows Forms, existuje mnoho různých funkcí návrhu nabízených ovládacími prvky model Windows Forms. Mezi funkce, které nabízí Návrhář sady Visual Studio, patří řádky přichycení, položky akcí a mřížka vlastností. Všechny tyto funkce nabízejí snadnější způsob interakce a přizpůsobení ovládacího prvku během návrhu. Tento článek obsahuje přehled o tom, jaký druh podpory můžete přidat do vlastních ovládacích prvků, aby bylo prostředí návrhu pro uživatele ovládacích prvků lepší.
Co se liší od rozhraní .NET Framework
Řada základních prvků návrhu vlastních ovládacích prvků zůstala stejná od rozhraní .NET Framework. Pokud ale používáte pokročilejší funkce přizpůsobení návrháře, jako jsou seznamy akcí, převaděče typů, vlastní dialogy, máte několik jedinečných scénářů, které je potřeba zpracovat.
Visual Studio je aplikace založená na rozhraní .NET Framework, a proto je vizuální návrhář, který vidíte pro model Windows Forms, také založený na rozhraní .NET Framework. S projektem rozhraní .NET Framework devenv.exe běží jak prostředí sady Visual Studio, tak aplikace model Windows Forms navržená v rámci stejného procesu. Když pracujete s aplikací ve Windows Forms .NET (nikoli .NET Framework), představuje to problém. Rozhraní .NET i .NET Framework nemůže fungovat ve stejném procesu. V důsledku toho Windows Forms .NET používá jiný návrhář, návrhář "mimo proces".
Návrhář mimo proces je proces označovaný jakoDesignToolsServer.exea běží společně s procesemdevenv.exesady Visual Studio. Proces DesignToolsServer.exe běží ve stejné verzi a platformě, jako je .NET 9 a x64, rozhraní .NET, na kterou cílí vaše aplikace. Pokud vlastní ovládací prvek potřebuje zobrazit uživatelské rozhraní v sadě Visual Studio, musí vlastní ovládací prvek implementovat architekturu klienta-server, aby se usnadnila komunikace do a z devenv.exe. Další informace naleznete v tématu Změny návrháře od rozhraní .NET Framework.
Okno vlastnosti
Okno vlastnosti sady Visual Studio zobrazí vlastnosti a události pro vybraný ovládací prvek nebo formulář. Obvykle se jedná o první bod vlastního přizpůsobení, který provádíte u vlastního ovládacího prvku nebo komponenty.
Následující obrázek znázorňuje ovládací prvek Button vybraný v návrháři vizuálů a mřížka vlastností zobrazující vlastnosti tlačítka:
Můžete řídit některé aspekty zobrazení informací o vlastním ovládacím prvku v mřížce vlastností. Atributy se použijí buď na vlastní třídu ovládacího prvku, nebo vlastnosti třídy.
Atributy pro třídy
Následující tabulka ukazuje atributy, které můžete použít k určení chování vlastních ovládacích prvků a součástí v době návrhu.
| Vlastnost | Popis |
|---|---|
| DefaultEventAttribute | Určuje výchozí událost komponenty. |
| DefaultPropertyAttribute | Určuje výchozí vlastnost komponenty. |
| DesignerAttribute | Určuje třídu použitou k implementaci služeb v době návrhu pro komponentu. |
| DesignerCategoryAttribute | Určuje, že návrhář třídy patří do určité kategorie. |
| ToolboxItemAttribute | Představuje atribut položky panelu nástrojů. |
| ToolboxItemFilterAttribute | Určuje řetězec filtru a typ filtru, který se má použít pro položku panelu nástrojů. |
Atributy pro vlastnosti
Následující tabulka uvádí atributy, které můžete použít u vlastností nebo jiných členů vlastních ovládacích prvků a součástí.
| Vlastnost | Popis |
|---|---|
| AmbientValueAttribute | Určuje hodnotu, která se má předat vlastnosti, aby vlastnost získala hodnotu z jiného zdroje. To se označuje jako atmosféra. |
| BrowsableAttribute | Určuje, zda má být vlastnost nebo událost zobrazena v okně Vlastnosti . |
| CategoryAttribute | Určuje název kategorie, ve které chcete seskupit vlastnost nebo událost při zobrazení v ovládacím prvku nastaveném PropertyGrid na Categorized režim. |
| DefaultValueAttribute | Určuje výchozí hodnotu vlastnosti. |
| DescriptionAttribute | Určuje popis vlastnosti nebo události. |
| DisplayNameAttribute | Určuje zobrazovaný název vlastnosti, události nebo veřejné metody, která nevrací hodnotu a nepřijímá žádné argumenty. |
| EditorAttribute | Určuje editor, který se má použít ke změně vlastnosti. |
| EditorBrowsableAttribute | Určuje, že vlastnost nebo metoda lze zobrazit v editoru. |
| HelpKeywordAttribute | Určuje kontextové klíčové slovo pro třídu nebo člena. |
| LocalizableAttribute | Určuje, zda má být vlastnost lokalizována. |
| PasswordPropertyTextAttribute | Označuje, že textová reprezentace objektu je skryta znaky, jako jsou hvězdičky. |
| ReadOnlyAttribute | Určuje, zda je vlastnost, ke které je tento atribut vázán, je při návrhu určena jen pro čtení nebo zápis. |
| RefreshPropertiesAttribute | Označuje, že mřížka vlastností by se měla aktualizovat, když se změní přidružená hodnota vlastnosti. |
| TypeConverterAttribute | Určuje, k jakému typu se má použít jako převaděč objektu, ke které je tento atribut vázán. |
Návrháři vlastních ovládacích prvků
Prostředí pro návrh vlastních ovládacích prvků je možné vylepšit vytvořením přidruženého vlastního návrháře. Ve výchozím nastavení se váš vlastní ovládací prvek zobrazí na návrhové ploše hostitele a vypadá stejně jako během běhu. Pomocí vlastního návrháře můžete vylepšit návrhové zobrazení ovládacího prvku, přidat položky akcí, přichytit řádky a další položky, které můžou uživateli pomoct při určování rozložení a konfigurace ovládacího prvku. Návrhář například v době návrhu ToolStrip přidá uživateli další ovládací prvky pro přidání, odebrání a konfiguraci jednotlivých položek, jak je znázorněno na následujícím obrázku:
Vlastní návrháře můžete vytvořit provedením následujících kroků:
- Přidání odkazu na balíček NuGet Microsoft.WinForms.Designer.SDK
- Vytvoření typu dědí z
Microsoft.DotNet.DesignTools.Designers.ControlDesignertřídy. - Ve třídě uživatelského ovládacího prvku označte třídu atributem System.ComponentModel.DesignerAttribute třídy a předejte typ, který jste vytvořili v předchozím kroku.
Další informace najdete v části Co se liší od rozhraní .NET Framework .
Položky akcí
Akce návrháře jsou kontextové nabídky, které uživateli umožňují rychle provádět běžné úlohy. Například, pokud přidáte TabControl do formuláře, budete přidávat a odebírat záložky z ovládacího prvku. Karty se spravují v okně Vlastnosti prostřednictvím TabPages vlastnosti, která zobrazuje editor kolekcí karet. Místo nutit uživatele, aby vždy procházel seznam Vlastnosti a hledal vlastnost TabPages, TabControl poskytuje tlačítko inteligentní značky, které je viditelné pouze tehdy, když je ovládací prvek vybrán, jak je znázorněno na následujících obrázcích.
Po výběru inteligentní značky se zobrazí seznam akcí:
Když přidáte akce Přidat kartu a Odebrat tabulátor, návrhář ovládacího prvku ji provede tak, abyste ji mohli rychle přidat nebo odebrat.
Vytvoření seznamu položek akce
Seznamy položek akcí jsou poskytovány typem ControlDesigner , který vytvoříte. Následující kroky představují základní průvodce vytvořením vlastního seznamu akcí:
- Přidání odkazu na balíček NuGet Microsoft.WinForms.Designer.SDK
- Vytvořte novou třídu seznamu akcí, která dědí z
Microsoft.DotNet.DesignTools.Designers.Actions.DesignerActionList. - Přidejte vlastnosti do seznamu akcí, ke které má uživatel přístup. Například přidání
boolneboBoolean(v jazyce Visual Basic) vlastnost do třídy vytvoří CheckBox ovládací prvek v seznamu akcí. - Podle pokynů v části Návrháři vlastních ovládacích prvků vytvořte nového návrháře.
- Ve třídě návrháře přepište
ActionListsvlastnost, která vracíMicrosoft.DotNet.DesignTools.Designers.Actions.DesignerActionListCollectiontyp. - Přidejte seznam akcí do
DesignerActionListCollectioninstance a vraťte ho.
Příklad seznamu akcí najdete v úložišti Model Windows Forms Designer Extensibility Documents &Samples na GitHubu, konkrétně ve TileRepeater.Designer.Server/ControlDesigner složce.
Modální editory typů dialogů
V okně Vlastnosti se většina vlastností snadno upravuje v mřížce, například když je záložním typem vlastnosti výčet, logická hodnota nebo číslo.
Někdy je vlastnost složitější a vyžaduje vlastní dialogové okno, které může uživatel použít ke změně vlastnosti. Například Font vlastnost je System.Drawing.Font typ, který obsahuje mnoho vlastností, které mění vzhled písma. V okně Vlastnosti to nejde snadno prezentovat, takže tato vlastnost k úpravě písma používá vlastní dialogové okno:
Pokud vlastnosti vlastního ovládacího prvku používají předdefinované editory typů poskytované model Windows Forms, můžete použít EditorAttribute k označení vlastností odpovídající editor rozhraní .NET Framework, který má Visual Studio používat. Použitím integrovaných editorů se vyhnete požadavkům replikace komunikace mezi klientem a serverem proxy objektu poskytovanou návrhářem mimo proces.
Při odkazování na integrovaný editor typů použijte typ rozhraní .NET Framework, nikoli typ .NET:
[Editor("System.Windows.Forms.Design.FileNameEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
"System.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
public string? Filename { get; set; }
<Editor("System.Windows.Forms.Design.FileNameEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")>
Public Property Filename As String
.NET Desktop feedback