Freigeben über


Wie VSPackages Benutzeroberflächenelemente Hinzufügen der IDE

VSPackage kann Elemente der Benutzeroberfläche, z. B. Menüs, Symbolleisten und Toolfenster, in der integrierten Entwicklungsumgebung von Visual Studio (IDE) hinzufügen.

Architekturprinzipien

Der Satz von Regeln und Strukturen, die ein VSPackage aktivieren, um die Benutzeroberfläche anpassen, wird die Befehls-Tabellen-Architekturbenannt. Die Befehls-Tabellen-Architektur basiert auf den nächsten Entwurfsprinzipien:

  • Die Benutzeroberfläche sollte nicht durcheinandergeworfen oder Verwechslungen.

  • Das dynamische Benutzeroberfläche sollte nicht statisch sein.

  • Die Benutzeroberfläche sollte anpassbar sein.

  • Die Benutzeroberfläche sollte hilfreich sein.

Die Benutzeroberfläche sollte nicht durcheinandergeworfen oder Verwechslungen

  • Mehrere wird in der Visual Studio-Sitzung VSPackages hostet, VSPackages installiert werden. Wenn ein VSPackage Befehle hinzufügen, darf es zuvor installierten VSPackages nicht unterbrechen, sollte jedoch auch die Funktionen zur VSPackages und das andere Funktionen aktivieren, um sie als Ermittlung beizutragen.

  • Jedes Menü, ob sie zugegriffen wird, indem die Hauptversionsnummer Menüleiste, ein Untermenü oder ein Kontextmenü Menüelemente enthalten kann, die von anderen VSPackages bereitgestellt werden. Daher müssen Sie darauf achten, nicht die Benutzeroberfläche überfüllen. Wenn zu viele Befehle gleichzeitig angezeigt werden, kann die Benutzeroberfläche Benutzer verwirrt.

Das dynamische Benutzeroberfläche sollte nicht statisch sein

  • Befehle können, abhängig vom Zustand der zugrunde liegenden Daten und der aktuelle Benutzer Aktivitäten jederzeit angezeigt oder ausgeblendet werden.

  • VSPackage muss aktiviert werden, um die Bezeichnung eines Benutzeroberflächenelements sowie den Inhalt seiner Menüs oder Kombinationsfelder zu ändern.

  • Benutzeroberflächenelemente müssen möglicherweise hinzugefügt oder entfernt werden, wenn ein VSPackage verwendet wird.

  • Benutzeroberflächenelemente erfordern möglicherweise zusätzliche Aufrufe von VSPackages, deren Werte aufzufüllen oder ihre aktuellen Zustand zu erkennen. Beispiele für diese Elemente umfassen Listen der zuletzt verwendeten Dateien (MRU), der Kombinationsfelder und der Selektoren für Farbe oder Struktur.

  • Es verbessert die Benutzerfreundlichkeit, um den Befehl in anderen Menüs VSPackages hinzuzufügen. Wenn beispielsweise der Befehl, den Sie bereitstellen, Kopierenähnelt, können Sie den Befehl in ein VSPackage ablegen, wo Kopieren angezeigt wird.

Die Benutzeroberfläche sollte anpassbar sein

  • Jedes Mal, wenn Benutzer kann die Benutzeroberflächenelemente in einem VSPackage anpassen, z. B. durch eine Schaltfläche in einem Toolfenster hinzufügt oder ein Menü neu angeordnet werden. In manchen Fällen sollten Sie die Anpassung deaktivieren.

  • Einige Befehle sind erst verfügbar, indem sie die Anpassung verwenden. Das heißt, könnte ein Befehl nicht in einem Menü oder einer Symbolleiste verfügbar, bis ein Benutzer sie erweitert, indem er das Dialogfeld Anpassen verwendet.

  • Jedes Mal, wenn Benutzer kann die Tastenkombinationen für die Befehle zusammen mit den Tastenkombinationen für Befehle anpassen, die von Visual Studio und anderen VSPackages stammen.

  • Die Befehle können ausgeführt werden, indem das Befehl Fenster verwendet. Daher muss die IDE wissen, welcher Befehl zu einem bestimmten Befehl Bezeichnung entspricht. Die IDE erreicht dies, indem ein Prozess, der als Kanonisierungstransformationsklassebezeichnet wird, in der Leerzeichen entfernt werden, um einen Befehlsnamen in ein einziges Wort zu komprimieren. Beispiel:“ is „von „&File geöffnetem die vom FileOpen“.

Die Benutzeroberfläche sollte hilfreich sein

  • Die meisten Benutzeroberflächenelemente sollten QuickInfos besitzen.

  • Eine höhere Leistung sollte nur VSPackages geladen, wenn eine ihrer Funktion aufgerufen wird. Dies wird auch als „das verzögerte Laden“.

  • Hinzufügungen zur IDE, das von einem VSPackage angefordert wird, sollte lokalisierbar sein.

  • Sie können Bitmaps verwenden, die in Visual Studio enthalten sind, oder Sie können zur Verfügung stellen.

Die Visual Studio-Befehls-Tabellen-Architektur

Wie erwähnt, unterstützt die Befehls-Tabellen-Architektur die vorangehenden Architektur prinzipien. Die Lehren hinter den Abstraktionen Datenstrukturen, den Tools und der Befehls-Tabellen-Architektur lauten wie folgt:

  • Es gibt drei grundlegende Arten Elemente: Menüs, Befehle und Gruppen. Menüs können in der Benutzeroberfläche als Menüs, Symbolleisten, Untermenüs oder Toolfenster verfügbar gemacht werden. Befehle sind Prozeduren, die der Benutzer ausführen darf und ob sie in der IDE als Menüelemente, Schaltflächen, Listenfelder verfügbar gemacht werden können oder anderer steuert. Gruppen sind Container für Menüs und Befehlen.

  • Jedes Element wird durch eine Definition angegeben, die das Element, seine Priorität relativ zu anderen Elementen und beschreibt die Flags, die das Verhalten ändern.

  • Jedes Element verfügt über eine Position, die das übergeordnete Element des Elements beschreibt. Ein Element kann mehrere übergeordnete Elemente verfügen, damit es an mehreren Stellen in der Benutzeroberfläche angezeigt werden kann.

    Jeder Befehl muss als eine Gruppe sein übergeordnetes Element haben, auch wenn es das Einzelkind in dieser Gruppe ist. Jedes Standardmenüs muss eine übergeordnete Gruppe haben. Symbolleisten und Toolfenster fungieren als eigene übergeordneten Objekte auf. Eine Gruppe kann als übergeordnetes Element die wichtigsten Visual Studio-Menüleiste haben oder jedes Menü oder Symbolleiste Toolfenster.

Wie Elemente definiert werden

. Vsct-Dateien werden in XML formatiert. Eine .vsct-Datei definiert die Benutzeroberflächenelemente für ein Paket und bestimmt, wo diese Elemente in der IDE erscheinen. Jedes Menü Gruppe oder Befehls im Paket wird zuerst eine GUID und eine ID im Abschnitt Symbols zugewiesen. Während der restlichen .vsct-Datei, wird jedes Menü Befehl und seine Gruppieren nach GUID-Wert und ID-Kombination identifiziert. Das folgende Beispiel veranschaulicht eine typische Symbols-Abschnitt veranschaulicht, wie mit Visual Studio-Paket-Vorlage generiert, wenn Menübefehl in der Vorlage ausgewählt ist.

<Symbols>
  <!-- This is the package guid. -->
  <GuidSymbol name="guidMenuTextPkg" value="{b1253bc6-d266-402b-89e7-5e3d3b22c746}" />

  <!-- This is the guid used to group the menu commands together -->
  <GuidSymbol name="guidMenuTextCmdSet" value="{a633d4e4-6c65-4436-a138-1abeba7c9a69}">

    <IDSymbol name="MyMenuGroup" value="0x1020" />
    <IDSymbol name="cmdidMyCommand" value="0x0100" />
  </GuidSymbol>

  <GuidSymbol name="guidImages" value="{53323d9a-972d-4671-bb5b-9e418480922f}" >
    <IDSymbol name="bmpPic1" value="1" />
    <IDSymbol name="bmpPic2" value="2" />
    <IDSymbol name="bmpPicSearch" value="3" />
    <IDSymbol name="bmpPicX" value="4" />
    <IDSymbol name="bmpPicArrows" value="5" />
  </GuidSymbol>
</Symbols>

Das Element der obersten Ebene des Symbols-Abschnitts wird GuidSymbol-Element. GuidSymbol-Element ist in Namen von GUIDs, die von der IDE verwendet werden, um Pakete und ihre Komponenten zu identifizieren.

Hinweis

GUIDs wird automatisch durch die Visual Studio-Paket-Vorlage generiert.Sie können auch eine eindeutige GUID erstellen, indem Sie auf GUID erstellen im Menü Extras .

Das erste Element, GuidSymbol PackageName [guid „Paket“], ist die GUID des Pakets selbst. Dies ist der GUID, die von Visual Studio verwendet wird, um das Paket zu laden. Normalerweise hat sie keine untergeordneten Elemente.

Gemäß der Konvention werden Menüs und Befehle unterhalb eines Sekunden GuidSymbol-Element, „guid [PackageName]“ CmdSet, gruppiert sind Bitmaps und unter einem Drittel GuidSymbol-Element, „guidImages“. Sie müssen diese Konvention folgen, nicht aber jedes Menü Gruppe, Befehls- und Bitmap müssen ein untergeordnetes Element eines GuidSymbol-Elements sein.

Im zweiten GuidSymbol-Element der den Befehl Paket festgelegte darstellt, sind einige IDSymbol-Elemente. Jedes IDSymbol-Element einen Namen zuordnet in einen numerischen Wert und stellt möglicherweise ein Menü, eine Gruppe oder einen Befehl dar, mit dem ein Teil des festgelegten Befehls. Die IDSymbol-Elemente im dritten GuidSymbol-Element stellen Bitmaps dar, die als Symbole für Befehle verwendet werden. Da GUID-/ID paare in einer Anwendung eindeutig sein müssen, können keine zwei untergeordneten Elemente des gleichen Elements GuidSymbol den gleichen Wert.

Menüs, Gruppen und Befehle

Wenn ein Menü, eine Gruppe oder ein Befehl eine GUID und eine ID verfügt, kann sie in der IDE hinzugefügt werden. Jedes Benutzeroberflächenelement muss die folgenden Ursachen haben:

  • Ein guid-Attribut, das den Namen des GuidSymbol-Elements übereinstimmt, dass das Benutzeroberflächenelement unter definiert ist.

  • Ein id-Attribut, das den Namen des zugeordneten IDSymbol-Elements übereinstimmt.

    Zusammen bilden guid und die id-Attribute die Signatur des Benutzeroberflächenelements.

  • Ein priority-Attribut, das die Positionierung des Benutzeroberflächenelements im übergeordneten Menü oder Gruppe bestimmt.

  • Parent-Element , das guid und id-Attribute verfügt, die die Signatur des übergeordneten Menüs oder der Gruppe angeben.

Menüs

Jedes Menü wird als Menu-Element im Menus-Abschnitt. Menüs müssen guid, idund priority-Attribute und ein Parent-Element und auch die folgenden zusätzlichen Attribute und untergeordneten Elemente aufweisen:

  • Ein type-Attribut, das angibt, ob das Menü in der IDE als Weise Menü oder Symbolleiste angezeigt werden soll.

  • Strings-Element , das ButtonText-Elemententhält, die den Titel des Menüs in der IDE angibt und CommandName-Element, der den Namen angibt, der im Befehl Fenster verwendet wird, um das Menü zuzugreifen.

  • Optionale Flags. Command Flag-Element scheint möglicherweise in einer Definition des Menüs oder seine Darstellung in der IDE Verhalten zu ändern.

Jedes Element muss Menu eine Gruppe als übergeordnetes Element besitzen, es sei denn, ein andockbares Element wie eine Symbolleiste darstellt. Ein andockbares Menü ist ein eigenes übergeordnetes Element. Weitere Informationen über Menüs und Werte für das Attribut type finden Sie in der Dokumentation Menu-Element .

Im folgenden Beispiel wird ein Menü angezeigt, das auf der Visual Studio-Menüleiste wird neben dem Extras Menü angezeigt.

<Menu guid="guidTopLevelMenuCmdSet"
id="TopLevelMenu" priority="0x700" type="Menu">
  <Parent guid="guidSHLMainMenu"
          id="IDG_VS_MM_TOOLSADDINS" />
  <Strings>
    <ButtonText>TestMenu</ButtonText>
    <CommandName>TestMenu</CommandName>
  </Strings>
</Menu>

Gruppen

Eine Gruppe ist ein Element, das im Groups-Abschnitt der .vsct-Datei definiert ist. Gruppen sind nur Container. Sie werden nicht in der IDE als sei denn Trennungslinie in einem Menü. Deshalb wird Group-Element nur von deren Signatur, Priorität und übergeordneten Element definiert.

Eine Gruppe kann ein Menü, eine andere Gruppe oder selbst als übergeordnetes Element haben. Allerdings ist das übergeordnete Element in der Regel ein Menü oder einer Symbolleiste. Das Menü im vorangehenden Beispiel ist ein untergeordnetes Element der Gruppe IDG_VS_MM_TOOLSADDINS , und diese Gruppe ist ein untergeordnetes Element der Visual Studio-Menüleiste. Die Gruppe im folgenden Beispiel ist ein untergeordnetes Element des Menüs im vorherigen Beispiel.

 <Group guid="guidTopLevelMenuCmdSet" id="MyMenuGroup"
priority="0x0600">
   <Parent guid="guidTopLevelMenuCmdSet" id="TopLevelMenu"/>
 </Group>

Da er Teil eines Menüs, wird diese Gruppe in der Regel Befehle enthalten. Allerdings kann sie andere Menüs enthalten. Dies ist das Untermenüs definiert werden, wie im folgenden Beispiel gezeigt.

<Menu guid="guidTopLevelMenuCmdSet" id="SubMenu"
priority="0x0100" type="Menu">
  <Parent guid="guidTopLevelMenuCmdSet" id="MyMenuGroup"/>
  <Strings>
    <ButtonText>Sub Menu</ButtonText>
    <CommandName>Sub Menu</CommandName>
  </Strings>
</Menu>

Befehle

Ein Befehl, der in der IDE bereitgestellt wird, wird als Button-Element oder Combo-Elementdefiniert. Um in einem Menü oder einer Symbolleiste angezeigt werden soll, muss der Befehl eine Gruppe als übergeordnetes Element haben.

Schaltflächen

Schaltflächen werden im Buttons-Abschnitt. Jedes Menüelement, Schaltfläche oder ein anderes Element, den ein Benutzer klickt, um einen einzelnen Befehl auszuführen, wird als eine Schaltfläche. Eine Typen von Schaltflächen Listen können auch Funktionen enthalten. Schaltflächen verfügen über dieselben erforderlichen und optionalen Attributen, die Menüs verfügen und Icon-Element können auch das die GUID und ID der Bitmap angibt, die die Schaltfläche in der IDE darstellt. Weitere Informationen über die Schaltflächen und ihre Attribute finden Sie in der Dokumentation Buttons-Element .

Die Schaltfläche im folgenden Beispiel handelt es sich um ein untergeordnetes Element der Gruppe im vorherigen Beispiel würde und in der IDE als Menüelement im übergeordneten Menü dieser Gruppe angezeigt werden.

<Button guid="guidTopLevelMenuCmdSet" id="cmdidTestCommand" priority="0x0100" type="Button">
  <Parent guid="guidTopLevelMenuCmdSet" id="MyMenuGroup" />
  <Icon guid="guidImages" id="bmpPic1" />
  <Strings>
    <CommandName>cmdidTestCommand</CommandName>
    <ButtonText>Test Command</ButtonText>
  </Strings>
</Button>

Kombinationsfelder

Kombinationsfelder werden im Combos-Abschnitt. Jedes Combo-Element stellt ein Dropdown-Listenfeld in der IDE dar. Das Listenfeld ist möglicherweise durch Benutzer je nach Wert des type-Attributs des Kombinationsfelds geschrieben werden. Kombinationsfelder verfügen über dieselben Elemente und Verhaltensweisen, die Schaltflächen und können auch die folgenden zusätzlichen Attribute aufweisen:

  • Ein Attribut, das defaultWidth Pixelbreite angibt.

  • Ein idCommandList-Attribut, das eine Liste angibt, die Elemente enthält, die im Listenfeld angezeigt werden. Die Liste Befehle muss sich im selben GuidSymbol Knoten deklariert werden, der das Kombinationsfeld enthält.

Im folgenden Beispiel wird ein Kombinationes Element.

<Combos>
  <Combo guid="guidFirstToolWinCmdSet"
         id="cmdidWindowsMediaFilename"
         priority="0x0100" type="DynamicCombo"
         idCommandList="cmdidWindowsMediaFilenameGetList"
         defaultWidth="130">
    <Parent guid="guidFirstToolWinCmdSet"
            id="ToolbarGroupID" />
    <CommandFlag>IconAndText</CommandFlag>
    <CommandFlag>CommandWellOnly</CommandFlag>
    <CommandFlag>StretchHorizontally</CommandFlag>
    <Strings>
      <CommandName>Filename</CommandName>
      <ButtonText>Enter a Filename</ButtonText>
    </Strings>
  </Combo>
</Combos>

Bitmap

Befehle, die zusammen mit einem Symbol angezeigt werden, müssen ein Icon-Element enthalten, das eine Bitmap verweist, indem GUID und ID verwendet werden Jede Bitmap wird als Bitmap-Element im Bitmaps-Abschnitt. Die einzigen erforderlichen Attribute für eine Bitmap Definition sind guid und href, die zur Quelldatei zeigt. Wenn die Quelldatei ein Ressourcen streifen ist, ist ein usedList-Attribut erforderlich, um die verfügbaren Bilder im Streifen aufzulisten. Weitere Informationen finden Sie in der Dokumentation zu Bitmap-Element.

Überordnen

Die folgenden Regeln bestimmen, wie ein Element ein anderes Element als übergeordnetes Element aufrufen kann.

Element

Definiert in diesem Abschnitt der Befehls-Tabelle

Kann enthalten sind (als übergeordnetes Element oder durch die Platzierung im CommandPlacements-Abschnitt oder in beide)

Kann enthalten (so genannte ein übergeordnetes Element)

Gruppe

Groups-Element, die IDE, VSPackages weiteres

Ein Menü, eine Gruppe, das Element selbst

Menüs, Gruppen und Befehle

Menü

Menus-Element, die IDE, VSPackages weiteres

1 n Gruppen

0 n Gruppen

Symbolleiste

Menus-Element, die IDE, VSPackages weiteres

Das Element selbst

0 n Gruppen

MenuItem

Buttons-Element, die IDE, VSPackages weiteres

1 n Gruppen, das Element selbst

-0 n Gruppen

Button

Buttons-Element, die IDE, VSPackages weiteres

1 n Gruppen, das Element selbst

Kombinationsfeld

Combos-Element, die IDE, VSPackages weiteres

1 n Gruppen, das Element selbst

Menü Befehl und Gruppen-Platzierung

Ein Menü, eine Gruppe oder ein Befehl kann in mehr als einem Speicherort in der IDE erscheinen. Damit ein Element wird in mehreren Speicherorten, muss es in den CommandPlacements-Abschnitt als CommandPlacement-Elementhinzugefügt werden. Jedes Menü Gruppe oder der Befehle können als Befehl hinzugefügt werden. Symbolleisten können jedoch nicht auf diese Weise positioniert werden, da sie nicht in mehreren kontextbezogenen Positionen angezeigt werden können.

platzierungen Befehls guidhaben, idund priority-Attribute. Die GUID und ID des Elements übereinstimmen müssen, positioniert ist. Das priority-Attribut steuert die Platzierung des Elements hinsichtlich weiterer Elemente. Wenn die IDE Zusammenführen zwei oder mehr Elemente, die dieselbe Priorität haben, werden ihre Platzierungen nicht definiert, da die IDE Paket nicht sichergestellt, dass Ressourcen in derselben Reihenfolge jedes Mal gelesen werden, dass das Paket erstellt wurde.

Wenn eine Gruppe oder ein Menü an mehreren Stellen angezeigt wird, werden alle untergeordneten Elemente dieses Menüs oder Gruppe in jeder Instanz.

Befehls-Sichtbarkeit und Kontext

Wenn mehrere VSPackages installiert sind, wirft möglicherweise ein Überfluss von Menüs, Symbolleisten und Menüelementen in der IDE durcheinander. Um dieses Problem zu vermeiden, können Sie die Sichtbarkeit der einzelnen Elementen der Benutzeroberfläche steuern indem Sie Sichtbarkeits einschränkungs- und - Befehls Flags verwenden.

Sichtbarkeits-Einschränkungen

Eine Sichtbarkeits KEY-Einschränkung wird als VisibilityItem-Element im Abschnitt VisibilityConstraints festgelegt. Eine Sichtbarkeits KEY-Einschränkung definiert bestimmte Benutzeroberflächen-Kontexte, in denen das Zielelement sichtbar ist. Ein Menü oder ein Befehl in diesem Abschnitt enthalten ist, wird nur angezeigt, wenn einer der definierten Kontexte aktiv ist. Wenn ein Menü oder ein Befehl nicht in diesem Abschnitt verwiesen wird, ist er immer standardmäßig sichtbar. Dieser Abschnitt gilt nicht für Gruppen.

VisibilityItem-Elemente müssen drei Attribute aufweisen wie folgt: guid und id des angegebenen Benutzeroberflächenelements und context. Das context-Attribut gibt an, wann das Zielelement sichtbar ist, und führt jeden gültigen Benutzeroberfläche-Kontext als Wert. Die Benutzeroberfläche-Kontextkonstanten für Visual Studio sind Member der VSConstants-Klasse. Jedes Element darf nur ein Kontext VisibilityItem-Wert annehmen. Um einen zweiten Kontext anzuwenden, erstellen Sie ein Sekunden VisibilityItem-Element das auf das gleiche Element verweist, wie im folgenden Beispiel gezeigt.

<VisibilityConstraints>
  <VisibilityItem guid="guidSolutionToolbarCmdSet"
        id="cmdidTestCmd"
        context="UICONTEXT_SolutionHasSingleProject" />
  <VisibilityItem guid="guidSolutionToolbarCmdSet"
        id="cmdidTestCmd"
        context="UICONTEXT_SolutionHasMultipleProjects" />
</VisibilityConstraints>

Befehls-Flags

Die folgenden Befehls Flags können die Sichtbarkeit von Menüs und die Befehle beeinflussen, auf die sie angewendet werden soll.

  • AlwaysCreate
    Menü wird erstellt, auch wenn keine Gruppen oder Schaltflächen verfügt.

    Gültig für: Menu

  • CommandWellOnly
    Wenden Sie dieses Flag, wenn der Befehl nicht auf dem Menü der obersten Ebene angezeigt, und Sie es bereitstellen möchten, z. B. für die zusätzliche Anpassung der Shell einer Taste bänden. Nachdem ein VSPackage installiert ist, kann ein Benutzer diese Befehle anpassen, indem Sie das Optionen Dialogfeld geöffnet und dann die unter der der Befehl Tastaturumgebung Kategorie behandelt. Beeinflusst weder Platzierung in Kontextmenüs, Symbolleisten, Menüs oder controllern Untermenüs.

    Gültig für: Button, Combo

  • DefaultDisabled
    Standardmäßig wird der Befehl wenn ein VSPackage, der den Befehl implementiert, wird nicht geladen oder deaktiviert die QueryStatus-Methode wurde nicht aufgerufen.

    Gültig für: Button, Combo

  • DefaultInvisible
    Standardmäßig ist der Befehl wenn ein VSPackage, der den Befehl implementiert, wird nicht geladen oder nicht sichtbar, die QueryStatus-Methode wurde nicht aufgerufen.

    Das Flag DynamicVisibility kombiniert werden soll.

    Gültig für: Button, Combo, Menu

  • DynamicVisibility
    Die Sichtbarkeit des Befehls kann geändert werden, indem die QueryStatus-Methode GUID oder einen Kontext verwendet, der im VisibilityConstraints-Abschnitt enthalten ist.

    Gilt für Befehle in Menüs angezeigt werden, nicht auf Symbolleisten. Symbolleisten Elemente der obersten Ebene können deaktiviert werden, jedoch nicht ausgeblendet werden, wenn das OLECMDF_INVISIBLE-Flag aus der QueryStatus-Methode zurückgegeben wurde.

    Auf einem Menü gibt dieses Flag an, dass er auch automatisch ausgeblendet werden soll, wenn ihre Member verborgen sind. Dieses Flag wird i. d. R. auf den Untermenüs zugewiesen, da Menüs der obersten Ebene bereits über dieses Verhalten verfügen.

    Das Flag DefaultInvisible kombiniert werden soll.

    Gültig für: Button, Combo, Menu

  • NoShowOnMenuController
    Wenn ein Befehl, der dieses Flag hat, in einem Menü controller positioniert wird, wird der Befehl nicht in der Dropdownliste aus.

    Gültig für: Button

Weitere Informationen über Befehls Flags finden Sie in der Dokumentation Command Flag-Element .

Allgemeine Anforderungen

Der Befehl muss die folgende Reihe von Tests führen, bevor sie angezeigt und aktiviert werden kann:

  • Der Befehl ist richtig positioniert.

  • Das DefaultInvisible-Flag ist nicht festgelegt.

  • Das übergeordnete Menü oder die Symbolleiste sichtbar ist.

  • Der Befehl ist wegen eines Kontext von Lotus im Abschnitt VisibilityConstraints-Element nicht sichtbar.

  • VSPackage-Code, der die IOleCommandTarget-Schnittstelle implementiert, wird an und ermöglicht den Befehl. Kein Schnittstellencode handelte es fing ab und dahinter.

  • Wenn ein Benutzer auf den Befehl klickt, wird er abhängig von der Prozedur, die in Befehls-Routing-Algorithmuserläutert wird.

Vordefinierte Befehle aufrufen

UsedCommands-Element VSPackages aktiviert, um Befehle zugreifen, die von anderen VSPackages oder in der IDE bereitgestellt werden. Dazu erstellen Sie UsedCommand-Element das die GUID und ID des Befehls verwendet wurde. Dadurch wird sichergestellt, dass der Befehl von Visual Studio geladen wird, auch wenn es nicht Teil der aktuellen Visual Studio-Konfiguration hat. Weitere Informationen finden Sie unter UsedCommand-Element.

Schnittstellen-Element-Darstellung

Überlegungen zum Auswählen und Positionierung von Stellbefehl Elemente lauten wie folgt:

  • Visual Studio bietet viele Benutzeroberflächenelemente an, die je nach Position nicht eingefügt werden.

  • Ein Benutzeroberflächenelement, die definiert werden soll, indem Sie das Flag DefaultInvisible wird nicht in der IDE, es sei denn, er entweder durch seine VSPackage-Implementierung der QueryStatus-Methode angezeigt wird, zugeordnete einem Kontext angezeigt bzw. der bestimmte Benutzeroberfläche im Abschnitt VisibilityConstraints .

  • Sogar erfolgreiche wird ein positionierter Befehl möglicherweise nicht angezeigt. Dies liegt daran, dass die Felle IDE automatisch oder Befehle zeigt in Abhängigkeit von Schnittstellen aufgeführt, die einem VSPackage (oder nicht) implementiert. Zum Beispiel wird eine Implementierung von mehreren Schnittstellen buildbezogene Erstellen von VSPackages Menüelemente automatisch angezeigt zu werden.

  • Das CommandWellOnly-Flag in der Definition des Benutzeroberflächenelements zuweisen bedeutet, dass der Befehl nur durch Anpassung hinzugefügt werden kann.

  • Befehle sind möglicherweise nur in bestimmten Benutzeroberfläche-Kontexten z. B. nur verfügbar, wenn ein Dialogfeld angezeigt wird, wenn die IDE in der Entwurfsansicht befindet.

  • Um bestimmte Benutzeroberflächenelemente dass in der IDE angezeigt werden sollen, müssen Sie eine oder mehrere Schnittstellen implementieren oder Code schreiben.

Siehe auch

Konzepte

Making Commands Available

Weitere Ressourcen

Allgemeine Aufgaben mit Befehlen, Menüs und Symbolleisten

Command Table Configuration (.ctc) Files

Command Table Format Reference

Command Routing in VSPackages