Architektura ovládacího prvku ToolStrip

ToolStripItem Třídy ToolStrip 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 that shows the ToolStrip object model.

Ke všem položkám ToolStrip v kolekci Items můžete přistupovat. Ke všem položkám ToolStripDropDownItem v kolekci DropDownItems můžete přistupovat. Ve třídě odvozené ToolStripz , můžete také použít DisplayedItems vlastnost 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 nabídce přetečení.

Následující položky jsou speciálně navržené tak, aby bez problémů fungovaly se ToolStripSystemRendererToolStripProfessionalRenderer všemi orientacemi. Ve výchozím nastavení jsou pro ovládací prvek k dispozici v době návrhu 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 pracovat 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 se ToolStripSystemRendererToolStripProfessionalRenderer všemi orientacemi. Ve výchozím nastavení jsou pro ovládací prvek k dispozici v době návrhu MenuStrip :

StatusStrip

StatusStripStatusBar nahradí ovládací prvek. 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 se ToolStripSystemRendererToolStripProfessionalRenderer všemi orientacemi. Ve výchozím nastavení jsou pro ovládací prvek k dispozici v době návrhu StatusStrip :

ContextMenuStrip

ContextMenuStripContextMenunahrazuje . Můžete přidružit ContextMenuStrip libovolný ovládací prvek a kliknutí pravým tlačítkem myši automaticky zobrazí místní nabídku (nebo místní nabídku). Pomocí metody můžete programově Show zobrazitContextMenuStrip. ContextMenuStrip podporuje stornovatelné Opening a Closing události pro zpracování dynamických souborů 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 se ToolStripSystemRendererToolStripProfessionalRenderer všemi orientacemi. Ve výchozím nastavení jsou pro ovládací prvek k dispozici v době návrhu 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.

Malování ing

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ů ToolStripToolStripItem model Windows Forms mají přepisovatelné OnPaint metody a Paint události. Stejně jako u pravidelného obrazu je souřadnicový systém relativní k klientské oblasti ovládacího prvku; to znamená, že levý horní roh ovládacího prvku je 0, 0. Událost Paint a OnPaint metoda chování se chovají ToolStripItem stejně jako jiné události malování ovládacích prvků.

Ovládací ToolStrip prvky také poskytují jemný přístup k vykreslování položek a kontejneru ToolStripRenderer prostřednictvím třídy, která má přepisovatelné metody pro malování pozadí, pozadí položky, obrázek položky, šipku položky, text položky 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 dvojitá ToolStrip vyrovnávací paměť, která využívá OptimizedDoubleBuffer nastavení.

Rodičovství

Koncept vlastnictví kontejneru a nadřazenosti je v ovládacích prvcích složitější ToolStrip než v jiných model Windows Forms ovládacích prvcích kontejneru. 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 nadřazení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í ToolStripItemhodnotu .

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

  • GetCurrentParent je přístup k vlastnosti jen pro Parent čtení. 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í kolekci ToolStrip Items obsahující aktuální ToolStripItemhodnotu . 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 model Windows Forms aplikaci 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 model Windows Forms.

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

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

  4. Přidejte libovolnou kombinaci , MenuStripToolStripa ContextMenuStrip ovládací prvky do ToolStripPanel oblastí v ToolStripContainersadě .

  5. Sestavte projekt.

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

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

Zděděné chování podřízených ovládacích prvků

Po dokončení předchozích kroků dojde k následujícímu zděděným 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ěryhodnost

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

  • ToolStripDropDown ovládací prvky vyžadují AllWindows zobrazení položek v ovládacích prvcích ToolStripControlHost. To platí pro vnitřní ovládací prvky, jako ToolStripTextBoxje , ToolStripComboBoxa ToolStripProgressBar také pro uživatelem vytvořené ovládací prvky. Pokud tento požadavek není splněn, tyto položky se nezobrazí. Žádná výjimka se nevyvolá.

  • 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í. Žádná výjimka se nevyvolá.

  • 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.

Využ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í pořadí ovládacích prvků.

  • 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í pořadí ovládacích prvků.

  • 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 pomocí kombinace Keys výčtu (který není specifický pro pořadí) k definování 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 klávesu ALT, na MenuStrip kterou MainMenuStripodkazuje . Odsud slouží kombinace kláves CTRL+TAB 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 vybere ToolStripButtonznak , ToolStripDropDownButtonnebo ToolStripSplitButton.

Fokus a ověření

Při aktivaci pomocí klávesy MenuStrip ALT se fokus nebo ToolStrip obvykle fokus nezabírají ani neodeberou z ovládacího prvku, který má fokus. Pokud je ovládací prvek hostovaný v MenuStrip rozevíracím seznamu nebo v něm MenuStrip, získá ovládací prvek fokus, když uživatel stiskne klávesu TAB. Obecně platí, že při GotFocusaktivaci klávesnicí nemusí být vyvolány události , a LeaveLostFocusEnterudálosti .MenuStrip V takových případech místo toho používejte MenuActivate události a MenuDeactivate události.

Ve výchozím nastavení CausesValidation je false. Pokud Validate chcete provést ověření, zavolejte ve formuláři explicitně.

Rozložení

Rozložení řídíte ToolStrip tak, že zvolíte některý ze členů ToolStripLayoutStyle s LayoutStyle vlastností.

Rozložení zásobníku

Stacking je uspořádání položek 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, podle potřeby 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 Visiblejeho GripStyle .

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. Flow Funkce rozložení jsou následující:

Rozložení tabulky

Table rozložení je výchozí hodnota pro StatusStrip. Je to podobné TableLayoutPanel. Flow Funkce rozložení 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 that shows the ToolStripItem object model.

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.

Položka s obsahem ToolStrip MenuStrip ContextMenuStrip StatusStrip Toolstripdropdown
ToolStripButton Yes No No No Ano
ToolStripComboBox Ano Ano Ano Ne Ano
ToolStripSplitButton Ano No No Ano Ano
ToolStripLabel Ano No No Ano Ano
ToolStripSeparator Ano Ano Ano Ne Ano
ToolStripDropDownButton Ano No No Ano Ano
ToolStripTextBox Ano Ano Ano Ne Ano
ToolStripMenuItem Ne Ano Ano No No
ToolStripStatusLabel No No No Ano Ne
ToolStripProgressBar Ano No No Ano Ne
ToolStripControlHost Ano Ano Ne Ano Yes

Toolstripbutton

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

Poskytuje ToolStripLabel funkce popisků v ToolStrip ovládacích prvcích. Je ToolStripLabel to jako ToolStripButton ten, který ve výchozím nastavení nedostane fokus a nevykresluje se jako nasdílený nebo zvýrazněný.

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

K podpoře ovládacího prvku propojení v objektu ToolStripLabelToolStrip.LinkColorLinkVisitedLinkBehavior

ToolStripStatusLabel

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

ToolStripSeparator

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.

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

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:

  • ToolStripControlHost Vytvoření 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 umožňuje zabalit běžné řídicí metody a vlastnosti pro snadný přístup do .ToolStrip

Toolstripcombobox

ToolStripComboBoxComboBox je optimalizovaná pro hostování v systému ToolStrip. Na úrovni se zpřístupní ToolStripComboBox podmnožina vlastností a událostí hostovaného ovládacího prvku, ale základní ComboBox ovládací prvek je plně přístupný prostřednictvím ComboBox vlastnosti.

Toolstriptextbox

ToolStripTextBoxTextBox je optimalizovaná pro hostování v systému ToolStrip. Na úrovni se zpřístupní ToolStripTextBox podmnožina vlastností a událostí hostovaného ovládacího prvku, ale základní TextBox ovládací prvek je plně přístupný prostřednictvím TextBox vlastnosti.

ToolStripProgressBar

ToolStripProgressBarProgressBar je optimalizovaná pro hostování v systému ToolStrip. Na úrovni se zpřístupní ToolStripProgressBar podmnožina vlastností a událostí hostovaného ovládacího prvku, ale základní ProgressBar ovládací prvek je plně přístupný prostřednictvím ProgressBar vlastnosti.

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

ToolStripMenuItemToolStripDropDownItem je funkce, která pracuje se speciálním ToolStripDropDownMenuContextMenuStrip zvýrazňováním, rozložením a uspořádáním sloupců pro nabídky a zpracovává je.

Toolstripdropdownbutton

ToolStripDropDownButton vypadá jako ToolStripButton, ale zobrazí rozevírací oblast, když na ni uživatel klikne. Skryjte nebo zobrazte šipku rozevíracího seznamu nastavením ShowDropDownArrow vlastnosti. 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ši a malování a mohou také provádět některé předzpracování 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 ToolStrip ovládacích prvcích nastavením těchto vlastností přímo nebo nastavením vlastnosti jen ImageList 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řípadech, kdy je styl ToolStrip rozložení nastaven na jednu z hodnot přetečení zásobníku.

Položky jsou umístěny ToolStrip v pořadí, ve kterém se položky zobrazují v kolekci Položky. 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é