Sdílet prostřednictvím


Architektura ovládacího prvku ToolStrip

Třídy ToolStrip a ToolStripItem poskytují flexibilní rozšiřitelný systém pro zobrazení panelu nástrojů, stavu a položek nabídky. Všechny tyto třídy jsou obsaženy v System.Windows.Forms oboru názvů a všechny jsou obvykle pojmenovány s předponou "ToolStrip" (například ToolStripOverflow) nebo s příponou "Strip" (například MenuStrip).

ToolStrip

Následující témata popisují ToolStrip a ovládací prvky, které jsou z něj odvozeny.

ToolStrip je abstraktní základní třída pro MenuStrip, StatusStripa ContextMenuStrip. Následující objektový model zobrazuje ToolStrip hierarchii dědičnosti.

Diagram znázorňující objektový model ToolStrip

K položkám ve ToolStrip můžete přistupovat prostřednictvím kolekce Items. K položkám ve ToolStripDropDownItem můžete přistupovat prostřednictvím kolekce DropDownItems. Ve třídě odvozené od ToolStrip, můžete použít také vlastnost DisplayedItems pro přístup pouze k těm položkám, které jsou aktuálně zobrazeny. Jedná se o položky, které aktuálně nejsou v rozbalovací nabídce.

Následující položky jsou speciálně navržené tak, aby bez problémů fungovaly i s ToolStripSystemRenderer i ToolStripProfessionalRenderer ve všech orientacích. Ve výchozím nastavení jsou k dispozici v době návrhu pro ovládací prvek ToolStrip.

MenuStrip je kontejner nejvyšší úrovně, který nahrazuje MainMenu. Poskytuje také funkce pro zpracování klíčů a více funkcí rozhraní dokumentů (MDI). Funkčně ToolStripDropDownItem a ToolStripMenuItem pracují spolu s MenuStrip, ačkoli jsou odvozeny z ToolStripItem.

Následující položky jsou speciálně navržené tak, aby bez problémů fungovaly i s ToolStripSystemRenderer i ToolStripProfessionalRenderer ve všech orientacích. Ve výchozím nastavení jsou k dispozici v době návrhu pro ovládací prvek MenuStrip.

Stavový proužek

StatusStrip nahrazuje ovládací prvek StatusBar. Mezi speciální funkce StatusStrip patří vlastní rozložení tabulky, podpora velikosti a pohyblivých úchytů formuláře a Spring vlastnost, která umožňuje ToolStripStatusLabel automaticky vyplnit dostupné místo.

Následující položky jsou speciálně navržené tak, aby bez problémů fungovaly i s ToolStripSystemRenderer i ToolStripProfessionalRenderer ve všech orientacích. Ve výchozím nastavení jsou k dispozici v době návrhu pro ovládací prvek StatusStrip.

KontextMenuStrip

ContextMenuStrip nahrazuje ContextMenu. Můžete přidružit libovolný ovládací prvek k ContextMenuStrip, a kliknutí pravým tlačítkem myši automaticky zobrazí místní nebo zkrácenou nabídku. Pomocí metody ContextMenuStrip můžete programově zobrazit Show. ContextMenuStrip podporuje zrušitelné Opening a Closing události pro zpracování dynamického zalidnění a scénářů s více kliknutími. ContextMenuStrip podporuje obrázky, stav kontroly položek nabídky, text, přístupové klávesy, klávesové zkratky a kaskádové nabídky.

Následující položky jsou speciálně navržené tak, aby bez problémů fungovaly i s ToolStripSystemRenderer i ToolStripProfessionalRenderer ve všech orientacích. Ve výchozím nastavení jsou k dispozici v době návrhu pro ovládací prvek ContextMenuStrip.

Obecné funkce ToolStrip

Následující témata popisují funkce a chování, které jsou obecné pro ToolStrip ovládací prvky a odvozené ovládací prvky.

Malba

Vlastní malování můžete provádět v ToolStrip ovládacích prvcích několika způsoby. Stejně jako u jiných ovládacích prvků Windows Forms ToolStrip a ToolStripItem, i tyto mají přepisovatelné metody OnPaint a události Paint. Podobně jako u běžného kreslení je souřadnicový systém relativní ke klientské oblasti ovládacího prvku; to znamená, že levý horní roh ovládacího prvku je 0, 0. Událost Paint a metoda OnPaint u ToolStripItem se chovají stejně jako jiné události vykreslování prvků ovládání.

Ovládací prvky ToolStrip také poskytují podrobnější přístup k vykreslování položek a jejich kontejneru pomocí třídy ToolStripRenderer, která má metody, které lze přepsat, pro malování pozadí, pozadí položek, obrázku položek, šipky položek, textu položek a ohraničení ToolStrip. Argumenty události pro tyto metody zveřejňují několik vlastností, jako jsou obdélníky, barvy a textové formáty, které můžete upravit podle potřeby.

Chcete-li upravit pouze několik aspektů, jak je položka malována, obvykle přepíšete ToolStripRenderer.

Pokud píšete novou položku a chcete řídit všechny aspekty obrazu, přepište metodu OnPaint . V rámci OnPaint, můžete použít metody z ToolStripRenderer.

Ve výchozím nastavení je ToolStrip použita dvojitá vyrovnávací paměť, která využívá OptimizedDoubleBuffer nastavení.

Rodičovství

Koncept vlastnictví a nadřazenosti kontejneru je v ovládacích prvcích ToolStrip složitější než v jiných ovládacích prvcích kontejneru Windows Forms. To je nezbytné pro podporu dynamických scénářů, jako je přetečení, sdílení rozevíracích položek mezi více ToolStrip položkami a podpora generování ContextMenuStrip z ovládacího prvku.

Následující seznam popisuje členy související s rodičovstvím a vysvětluje jejich použití.

  • OwnerItem přistupuje k položce, která je zdrojem rozevírací položky. To je podobné SourceControl, ale místo vrácení ovládacího prvku vrátí ToolStripItem.

  • SourceControl určuje, který ovládací prvek je zdrojem ContextMenuStrip, pokud více ovládacích prvků sdílí stejné ContextMenuStrip.

  • GetCurrentParent je přístupový prvek pouze pro čtení k vlastnosti Parent. Nadřazený objekt se liší od vlastníka v tom, že nadřazený objekt označuje vrácený aktuální stav ToolStrip , ve kterém je položka zobrazena, což může být v oblasti přetečení.

  • Owner vrátí ToolStrip, jehož kolekce Items obsahuje aktuální ToolStripItem. Toto je nejlepší způsob, jak odkazovat ImageList na vlastnosti nejvyšší úrovně ToolStrip nebo jiné vlastnosti, aniž byste museli psát speciální kód pro zpracování přetečení.

Chování zděděných ovládacích prvků

Následující ovládací prvky jsou uzamčeny při každém použití v dědičnosti:

Můžete například vytvořit novou aplikaci Windows Forms pomocí jednoho nebo více ovládacích prvků v předchozím seznamu. Nastavte modifikátor přístupu jednoho nebo více ovládacích prvků na public nebo protecteda pak sestavte projekt. Přidejte formulář, který dědí z prvního formuláře, a pak vyberte zděděný ovládací prvek. Ovládací prvek se zobrazí zamknutý, chová se, jako by jeho modifikátor přístupu byl private.

Podpora dědičnosti ToolStripContainer

Ovládací ToolStripContainer prvek podporuje omezené zděděné scénáře, podobně jako v následujícím příkladu:

  1. Vytvořte novou aplikaci Windows Forms.

  2. Přidejte do formuláře ToolStripContainer.

  3. Nastavte modifikátor přístupu ToolStripContainer na public nebo protected.

  4. Přidejte libovolnou kombinaci ToolStrip, MenuStrip a ContextMenuStrip, ovládací prvky do ToolStripPanel oblastí v ToolStripContainer sadě.

  5. Zkompilujte projekt.

  6. Přidejte formulář, který dědí z prvního formuláře.

  7. Vyberte zděděný prvek ToolStripContainer na formuláři.

Zděděné chování dětských ovládacích prvků

Po dokončení předchozích kroků dojde k následujícímu zděděnému chování:

  • V návrháři se ovládací prvek zobrazí s zděděnou ikonou.

  • Ovládací ToolStripPanel prvky jsou zamknuté. Jejich obsah nelze vybrat ani změnit jejich uspořádání.

  • Ovládací prvky můžete přidat do ToolStripContentPanel, přesunout ovládací prvky a nastavit je jako podřízené ovládací prvky ToolStripContentPanel.

  • Změny se zachovají i po vytvoření formuláře.

    Poznámka:

    Odeberte modifikátory přístupu ze všech ToolStripPanel ovládacích prvků, které jsou součástí ToolStripContainer. Modifikátor ToolStripContainer přístupu řídí celý ovládací prvek.

Částečná důvěra

Omezení ToolStrippod částečnou důvěrou jsou navržena tak, aby zabránila neúmyslnému zadání osobních údajů, které neoprávněné osoby nebo služby by mohly používat. Ochranná opatření jsou následující:

  • ToolStripDropDown ovládací prvky vyžadují AllWindows pro zobrazení položek v ToolStripControlHost. To platí jak pro vnitřní ovládací prvky, jako ToolStripTextBox, ToolStripComboBox a ToolStripProgressBar, tak i pro uživatelem vytvořené ovládací prvky. Pokud tento požadavek není splněn, tyto položky se nezobrazí. Není vyvolána žádná výjimka.

  • Nastavení vlastnosti na AutoClosefalse hodnotu není povoleno a parametr události cancelable Closing je ignorován. To znemožňuje zadání více než jednoho stisknutí kláves bez zavření rozevírací položky. Pokud tento požadavek není splněn, tyto položky se nezobrazí. Není vyvolána žádná výjimka.

  • Mnoho událostí zpracování stisknutí kláves se nevyvolá, pokud k nim dojde v jiných kontextech částečné důvěryhodnosti než AllWindows.

  • Přístupové klíče se nezpracují, pokud AllWindows nejsou uděleny.

Použití

Následující vzory použití mají vliv na ToolStrip rozložení, interakci s klávesnicí a chování koncových uživatelů:

  • Připojeno k ToolStripPanel

    Lze ToolStrip přemístit uvnitř ToolStripPanel a napříč ToolStripPanel. Vlastnost Dock je ignorována a pokud Stretch je falsevlastnost , roste velikost ToolStrip při přidávání položek do objektu ToolStripPanel. ToolStrip Obvykle se neúčastní tabulátorového pořadí.

  • Ukotveno

    Je ToolStrip umístěn na jedné straně kontejneru v pevné poloze a jeho velikost se rozšiřuje přes celý okraj, ke kterému je ukotven. ToolStrip Obvykle se neúčastní tabulátorového pořadí.

  • Naprosto umístěné

    Je ToolStrip to jako ostatní ovládací prvky, v tom, že je umístěna Location vlastností, má pevnou velikost a obvykle se účastní pořadí ovládacích prvků.

Interakce pomocí klávesnice

Přístupové klíče

V kombinaci s klávesou ALT nebo za ním jsou přístupové klávesy jedním ze způsobů, jak aktivovat ovládací prvek pomocí klávesnice. ToolStrip podporuje explicitní i implicitní přístupové klíče. Explicitní definice používá před písmenem znak ampersand (&). Implicitní definice používá algoritmus, který se pokusí najít odpovídající položku na základě pořadí znaků v dané Text vlastnosti.

Klávesové zkratky

Klávesové zkratky používané MenuStrip se určují kombinací bezpořadého výčtu Keys, který definuje klávesové zkratky. Vlastnost můžete také použít ShortcutKeyDisplayString k zobrazení klávesové zkratky pouze s textem, například zobrazení "Del" místo "Delete".

Klávesa ALT aktivuje prvek označený pomocí MenuStrip a MainMenuStrip. Odsud pomocí kombinace kláves CTRL+TAB přecházíte mezi ToolStrip ovládacími prvky uvnitř ToolStripPanels. Klávesa TAB a klávesy se šipkami na numerické klávesnici přechází mezi položkami v tabulce ToolStrip. Speciální algoritmus zpracovává navigaci v oblasti přetečení. MEZERNÍK označí ToolStripButton, ToolStripDropDownButton nebo ToolStripSplitButton.

Fokus a ověření

Po aktivaci pomocí klávesy ALT MenuStrip nebo ToolStrip obvykle neberou ani neodnímá fokus z ovládacího prvku, který má aktuálně fokus. Pokud je v MenuStrip hostovaný ovládací prvek nebo v rozevíracím seznamu MenuStrip, získá ovládací prvek fokus, když uživatel stiskne klávesu TAB. Obecně platí, že události GotFocus, LostFocus, Enter a Leave z MenuStrip nemusí být vyvolány, když jsou aktivovány klávesnicí. V takových případech místo toho používejte události MenuActivate a MenuDeactivate.

Ve výchozím nastavení je CausesValidationfalse. Explicitně zavolejte Validate na svém formuláři, abyste provedli ověření.

Rozložení

Rozložení ToolStrip řídíte tak, že vyberete jednu z vlastností členů ToolStripLayoutStyle pomocí LayoutStyle.

Rozložení zásobníku

Skládání představuje uspořádání předmětů vedle sebe na obou koncích ToolStrip. Následující seznam popisuje rozložení zásobníku.

Další funkce rozložení zásobníku

Alignment určuje konec ToolStrip , ke kterému je položka zarovnaná.

Pokud se položky nevejdou do objektu ToolStrip, automaticky se zobrazí tlačítko přetečení. Nastavení Overflow vlastnosti určuje, zda se položka zobrazí v oblasti přetečení vždy, když je to potřeba, nebo nikdy.

LayoutCompleted V případě můžete zkontrolovat Placement vlastnost, abyste zjistili, zda byla položka umístěna na hlavní ToolStrip, přetečení ToolStripnebo pokud se aktuálně nezobrazuje. Typické důvody, proč položka není zobrazena, jsou, že položka nevejde na hlavní ToolStrip a jeho Overflow vlastnost byla nastavena na Never.

ToolStrip Nastavte pohyblivý tak, že ho umístíte do ToolStripPanel a nastavíte GripStylejeho Visible .

Další možnosti rozložení

Další možnosti rozložení jsou Flow a Table.

Rozložení toku

Flow rozložení je výchozí pro ContextMenuStrip, ToolStripDropDownMenua ToolStripOverflow. Je to podobné FlowLayoutPanel. Funkce rozložení Flow jsou následující:

Rozložení tabulky

Table rozložení je výchozí hodnota pro StatusStrip. Je to podobné TableLayoutPanel. Funkce rozložení Flow jsou následující:

ToolStripItem

Následující témata popisují ToolStripItem a ovládací prvky, které jsou z něj odvozeny.

ToolStripItemje abstraktní základní třída pro všechny položky, které přecházejí do .ToolStrip Následující objektový model zobrazuje ToolStripItem hierarchii dědičnosti.

Diagram znázorňující objektový model ToolStripItem

ToolStripItem třídy buď dědí přímo z ToolStripItem, nebo zdědí nepřímo prostřednictvím ToolStripItemToolStripControlHost nebo ToolStripDropDownItem.

ToolStripItem ovládací prvky musí být obsaženy v objektu ToolStrip, MenuStrip, StatusStripnebo ContextMenuStrip nelze přidat přímo do formuláře. Různé třídy kontejneru jsou navrženy tak, aby obsahovaly příslušnou podmnožinu ovládacích ToolStripItem prvků.

Následující tabulka uvádí ovládací prvky zásob ToolStripItem a kontejnery, ve kterých vypadají nejlépe. I když lze libovolnou ToolStrip položku hostovat v libovolném ToolStrip-odvozeném kontejneru, byly tyto položky navrženy tak, aby vypadaly nejlépe v následujících kontejnerech:

Poznámka:

ToolStripDropDown se nezobrazuje v sadě nástrojů návrháře.

Obsahovaná položka ToolStrip MenuStrip KontextMenuStrip Stavový proužek ToolStripDropDown
ToolStripButton Ano Ne Ne Ne Ano
ToolStripComboBox Ano Ano Ano Ne Ano
ToolStripSplitButton Ano Ne Ne Ano Ano
ToolStripLabel Ano Ne Ne Ano Ano
ToolStripSeparator Ano Ano Ano Ne Ano
ToolStripDropDownButton Ano Ne Ne Ano Ano
ToolStripTextBox Ano Ano Ano Ne Ano
ToolStripMenuItem Ne Ano Ano Ne Ne
ToolStripStatusLabel Ne Ne Ne Ano Ne
ToolStripProgressBar Ano Ne Ne Ano Ne
ToolStripControlHost Ano Ano Ne Ano Ano

Tlačítko nástrojového pruhu

ToolStripButton je položka tlačítka pro ToolStrip. Můžete ho zobrazit s různými styly ohraničení a můžete ho použít k reprezentaci a aktivaci provozních stavů. Můžete ho také definovat tak, aby měl fokus ve výchozím nastavení.

ToolStripLabel

ToolStripLabel poskytuje funkci popisků v ovládacích prvcích ToolStrip. ToolStripLabel je jako ToolStripButton, který ve výchozím nastavení nedostane fokus a nevykresluje se jako stisknutý nebo zvýrazněný.

ToolStripLabel jako hostovaná položka podporuje přístupové klíče.

Použijte vlastnosti LinkColor, LinkVisited a LinkBehavior na ToolStripLabel pro podporu ovládání propojení v objektu ToolStrip.

ToolStripStatusLabel

ToolStripStatusLabel je verze ToolStripLabel určená speciálně pro použití v StatusStrip. Mezi speciální funkce patří BorderStyle, BorderSidesa Spring.

Oddělovač panelu nástrojů

Přidá ToolStripSeparator svislou nebo vodorovnou čáru do panelu nástrojů nebo nabídky v závislosti na orientaci. Poskytuje seskupení nebo rozlišení mezi položkami, jako jsou položky v nabídce.

ToolStripSeparator můžete přidat během návrhu tak, že ho vyberete z rozevíracího seznamu. Můžete však také automaticky vytvořit ToolStripSeparator zadáním spojovníku (-) v metodě nebo v uzlu šablony návrháře Add.

ToolStripControlHost

ToolStripControlHost je abstraktní základní třída pro ToolStripComboBox, ToolStripTextBoxa ToolStripProgressBar. ToolStripControlHost může hostovat další ovládací prvky, včetně vlastních ovládacích prvků, dvěma způsoby:

  • Vytvořte ToolStripControlHost s třídou, která je odvozena od Control. Chcete-li plně získat přístup k hostovaným ovládacím prvkům a vlastnostem, musíte přetypovat Control vlastnost zpět do skutečné třídy, kterou představuje.

  • Rozšiřte ToolStripControlHosta v konstruktoru bez parametrů zděděné třídy volejte konstruktor základní třídy, který předává třídu, která je odvozena z Control. Tato možnost vám umožňuje zahrnout běžné metody řízení a vlastnosti pro snadný přístup do ToolStrip.

ToolStripComboBox

ToolStripComboBox je ComboBox optimalizovaná pro hostování v ToolStrip. Podmnožina vlastností a událostí hostovaného ovládacího prvku je zpřístupněna na úrovni ToolStripComboBox, avšak základní ovládací prvek ComboBox je plně dostupný pomocí vlastnosti ComboBox.

ToolStripTextBox

ToolStripTextBox je TextBox optimalizovaná pro hostování v ToolStrip. Podmnožina vlastností a událostí hostovaného ovládacího prvku je zpřístupněna na úrovni ToolStripTextBox, avšak základní ovládací prvek TextBox je plně dostupný pomocí vlastnosti TextBox.

ToolStripProgressBar

ToolStripProgressBar je ProgressBar optimalizovaná pro hostování v ToolStrip. Podmnožina vlastností a událostí hostovaného ovládacího prvku je zpřístupněna na úrovni ToolStripProgressBar, avšak základní ovládací prvek ProgressBar je plně dostupný pomocí vlastnosti ProgressBar.

ToolStripDropDownItem

ToolStripDropDownItem je abstraktní základní třída pro ToolStripMenuItem, ToolStripDropDownButtona ToolStripSplitButton, které mohou hostovat položky přímo nebo hostovat další položky v rozevíracím kontejneru. Provedete to nastavením DropDown vlastnosti na ToolStripDropDown a nastavením Items vlastnosti objektu ToolStripDropDown. Přístup k těmto rozevíracím položkám přímo prostřednictvím DropDownItems vlastnosti.

ToolStripMenuItem

ToolStripMenuItem ToolStripDropDownItem je nástroj, který pracuje s ToolStripDropDownMenu a ContextMenuStrip pro zajištění speciálního zvýrazňování, rozložení a uspořádání sloupců v nabídce.

ToolStripDropDownButton

ToolStripDropDownButton vypadá jako ToolStripButton, ale zobrazí rozevírací oblast, když na ni uživatel klikne. Nastavte vlastnost ShowDropDownArrow a skryjte nebo zobrazte šipku rozevíracího seznamu. ToolStripDropDownButton hostuje ToolStripOverflowButton položky, které přetékají ToolStrip.

ToolStripSplitButton

ToolStripSplitButton kombinuje funkce tlačítka a rozevíracího seznamu.

DefaultItem Pomocí vlastnosti můžete synchronizovat Click událost vybrané rozevírací položky s položkou zobrazenou na tlačítku.

Obecné funkce ToolStripItem

ToolStripItem poskytuje následující obecné funkce a možnosti pro dědění ovládacích prvků:

  • Základní události

  • Zpracování obrázků

  • Zarovnání

  • Vztah textu a obrázku

  • Styl zobrazení

Základní události

ToolStripItem ovládací prvky přijímají vlastní události kliknutí myší, události myši a události malování a mohou také provádět předzpracování vstupů z klávesnice.

Zpracování obrázků

Vlastnosti Image, ImageAlign, ImageIndexa ImageKeyImageScaling se vztahují k různým aspektům zpracování obrázků. Obrázky můžete použít v ovládacích prvcích ToolStrip přímým nastavením těchto vlastností nebo nastavením vlastnosti ImageList pouze za běhu.

Měřítko obrázku je určeno interakcí vlastností v obou ToolStrip a ToolStripItemnásledujícím způsobem:

Zarovnání

Hodnota Alignment vlastnosti určuje konec ToolStrip , na kterém se položka zobrazí. Vlastnost Alignment funguje pouze v případě, že je styl rozložení ToolStrip nastaven na jednu z hodnot jako je například vertikální stohování.

Položky jsou umístěny na ToolStrip v pořadí, ve kterém se objevují v kolekci položek. Pokud chcete programově změnit místo, kde je položka rozložena, použijte Insert metodu pro přesunutí položky v kolekci. Tato metoda přesune položku, ale nezduplikuje ji.

Vztah textu a obrázku

Vlastnost TextImageRelation definuje relativní umístění obrázku s ohledem na text na objektu ToolStripItem. Položky, které neobsahují obrázek, text nebo obojí, se považují za zvláštní případy, ToolStripItem aby nezobrazovat prázdné místo pro chybějící prvek nebo prvky.

Styl zobrazení

DisplayStyle umožňuje nastavit hodnoty vlastností Text a Obrázek položky a přitom zobrazovat jenom to, co chcete. Obvykle se používá ke změně pouze stylu zobrazení při zobrazení stejné položky v jiném kontextu.

Třídy příslušenství

Mezi třídy, které poskytují různé další funkce, patří:

Viz také