Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Benachrichtigungssysteme
Es gibt mehrere Möglichkeiten, den Benutzer darüber zu informieren, was in Visual Studio in Bezug auf seine Softwareentwicklungsaufgaben geschieht.
Bei der Implementierung einer beliebigen Art von Benachrichtigung:
Halten Sie die Anzahl der Benachrichtigungen auf die minimale effektive Zahl. Benachrichtigungen sollten für eine Mehrheit der Visual Studio-Benutzer oder für Benutzer eines bestimmten Feature-/Featurebereichs gelten. Eine übermäßige Verwendung von Benachrichtigungen kann den Benutzer quer nachverfolgen oder die wahrgenommene Benutzerfreundlichkeit des Systems verringern.
Stellen Sie sicher, dass Sie klare nachrichten mit Aktionen präsentieren, die der Benutzer verwenden kann, um den geeigneten Kontext aufzurufen, um komplexere Entscheidungen zu treffen und weitere Maßnahmen zu ergreifen.
Präsentieren Sie synchrone und asynchrone Nachrichten entsprechend. Synchrone Benachrichtigungen deuten darauf hin, dass etwas sofortige Aufmerksamkeit erfordert, z. B. wenn ein Webdienst abstürzt oder eine Code-Ausnahme ausgelöst wird. Der Benutzer sollte sofort über diese Situationen informiert werden, die seine Eingabe erfordern, z. B. in einem modalen Dialogfeld. Asynchrone Benachrichtigungen sind solche, die der Benutzer kennen sollte, aber nicht erforderlich sein muss, um sofort zu handeln, z. B. wenn ein Buildvorgang abgeschlossen ist oder eine Websitebereitstellung abgeschlossen ist. Diese Nachrichten sollten umgebungsarmer sein und den Aufgabenfluss des Benutzers nicht unterbrechen.
Verwenden Sie modale Dialogfelder nur, wenn dies erforderlich ist, um zu verhindern, dass der Benutzer weitere Maßnahmen ergreifen kann, bevor die Nachricht bestätigt oder eine im Dialogfeld dargestellte Entscheidung getroffen wird.
Entfernen Sie Umgebungsbenachrichtigungen, wenn sie nicht mehr gültig sind. Fordern Sie nicht an, dass der Benutzer eine Benachrichtigung schließt, wenn er bereits Maßnahmen ergriffen hat, um das Problem zu beheben, über das er benachrichtigt wurde.
Beachten Sie, dass Benachrichtigungen zu falschen Korrelationen führen können. Benutzer können glauben, dass eine oder mehrere ihrer Aktionen eine Benachrichtigung ausgelöst haben, wenn tatsächlich keine kausale Beziehung vorhanden war. Seien Sie in der Benachrichtigung über den Kontext, den Trigger und die Quelle der Benachrichtigung klar.
Auswählen der richtigen Methode
Verwenden Sie diese Tabelle, um Ihnen bei der Auswahl der richtigen Methode zu helfen, um den Benutzer über Ihre Nachricht zu informieren.
Methode | Verwenden | Nicht verwenden |
---|---|---|
Modale Fehlermeldungsdialoge | Verwenden Sie diese Vorgehensweise, wenn eine Benutzerantwort erforderlich ist, bevor Sie fortfahren. | Verwenden Sie nicht, wenn der Benutzer nicht blockiert werden muss, und unterbrechen Sie den Fluss. Vermeiden Sie modale Dialogfelder, wenn es möglich ist, die Nachricht auf eine andere, weniger aufdringliche Weise anzuzeigen. |
IDE-Statusleiste | Wird verwendet, wenn umgebungstextbezogene Informationen zum Status eines Prozesses vorhanden sind. | Verwenden Sie nicht allein. Am besten in Verbindung mit einem anderen Feedbackmechanismus verwendet. |
Eingebettete Infoleiste | Verwenden Sie in einem Toolfenster oder Dokumentfenster, um Status, Fehlerstatus, Ergebnisse und/oder Aktionen erfordernde Informationen zu benachrichtigen. | Verwenden Sie nicht, wenn die Informationen nicht für den Ort relevant sind, an dem die Infoleiste platziert wird. Verwenden Sie nicht außerhalb eines Dokument-/Toolfensters. |
Mauscursoränderungen | Kann verwendet werden, um zu benachrichtigen, dass ein Prozess ausgeführt wird. Wird auch verwendet, um zu benachrichtigen, dass sich eine Zustandsänderung in der Maus befindet, z. B. wenn das Ziehen/Ablegen ausgeführt wird oder sich der Mauscursor in einem bestimmten Modus befindet, z. B. im Zeichnungsmodus. | Verwenden Sie nicht für kurze Fortschrittsänderungen oder wenn das Flattern des Cursors wahrscheinlich ist (z. B. wenn Sie an Teile eines länger ausgeführten Prozesses gebunden sind, anstatt mit dem gesamten Prozess). |
Statusindikatoren | Verwenden Sie diesen Vorgang, wenn Sie den Fortschritt melden müssen (entweder bestimmt oder unbestimmt). Es gibt eine Vielzahl von Statusanzeigetypen und eine bestimmte Verwendung für jeden. Siehe Statusindikatoren. | |
Visual Studio-Fenster "Benachrichtigungen" | Das Fenster "Benachrichtigungen" ist nicht öffentlich erweiterbar. Es wird jedoch verwendet, um eine Reihe von Nachrichten zu Visual Studio zu kommunizieren, einschließlich kritischer Probleme mit Ihrer Lizenz und Informationsbenachrichtigungen über Updates an Visual Studio oder an Pakete. | Verwenden Sie nicht für andere Arten von Benachrichtigungen. |
Fehlerliste | Wenn sich das Problem direkt auf die aktuell geöffnete Lösung des Benutzers bezieht(Fehler/Warnung/Info), muss er möglicherweise Maßnahmen für den Code ergreifen. Dazu gehören beispielsweise: - Compilermeldungen (Fehler/Warnung/Info) - Code analyzer/Diagnostic messages about the code - Erstellen von Nachrichten Kann für Probleme im Zusammenhang mit den Projekt- oder Lösungsdateien geeignet sein, berücksichtigen Sie jedoch zuerst eine Projektmappen-Explorer Indikation. |
Verwenden Sie nicht für Elemente, die keinen Bezug zum geöffneten Lösungscode des Benutzers haben. |
Editor-Benachrichtigungen: Glühbirne | Verwenden Sie diesen Fehler, wenn Sie über einen Fix verfügen, um ein Problem zu beheben, das in der geöffneten Datei vorhanden ist. Beachten Sie, dass die Glühbirne auch für das Hosten von schnellen Aktionen verwendet werden sollte, die bei Bedarf für den Code des Benutzers ausgeführt werden, z. B. Umgestaltungen, aber in diesem Fall nicht "Benachrichtigungsformat". |
Verwenden Sie nicht für Elemente, die keine Beziehung zur geöffneten Datei haben. |
Editorbenachrichtigungen: Wellenlinien | Wird verwendet, um den Benutzer auf ein Problem mit einer bestimmten Spanne seines geöffneten Codes hinzuweisen (z. B. ein rotes Wellenzeichen für Fehler). | Verwenden Sie nicht für Elemente, die sich nicht auf einen bestimmten Bereich des geöffneten Codes beziehen. |
Eingebettete Statusleisten | Dient zum Bereitstellen des Status im Zusammenhang mit Inhalten oder Prozessen im Kontext eines bestimmten Toolfensters, eines Dokumentfensters oder eines Dialogfelds. | Verwenden Sie nicht für allgemeine Produktbenachrichtigungen, Prozesse oder Elemente, die keine Beziehung zum Inhalt innerhalb des jeweiligen Fensters haben. |
Windows-Taskleistenbenachrichtigungen | Wird verwendet, um Benachrichtigungen für out-of-proc-Prozesse oder Begleitanwendungen anzuzeigen. | Verwenden Sie nicht für Benachrichtigungen, die für die IDE relevant sind. |
Benachrichtigungsblasen | Dient zum Benachrichtigen eines Remoteprozesses oder einer Änderung außerhalb der IDE. | Verwenden Sie nicht als Mittel, um den Benutzer über Prozesse innerhalb der IDE zu benachrichtigen. |
Benachrichtigungsmethoden
Modale Fehlermeldungsdialoge
Ein modales Fehlermeldungsdialogfeld wird verwendet, um eine Fehlermeldung anzuzeigen, die die Bestätigung oder Aktion des Benutzers erfordert.
Ein modales Fehlermeldungsdialogfeld, in dem der Benutzer über eine ungültige Verbindungszeichenfolge einer Datenbank benachrichtigt wird
IDE-Statusleiste
Die Wahrscheinlichkeit, dass Benutzer Statusleistentext bemerken, korreliert mit ihrer gesamten Computererfahrung und spezifischen Erfahrung mit der Windows-Plattform. Die Visual Studio-Kundenbasis ist in beiden Bereichen tendenziell zu erfahren, obwohl auch erfahrene Windows-Benutzer möglicherweise Änderungen in der Statusleiste verpassen. Daher wird die Statusleiste am besten für Informationszwecke oder als redundanter Hinweis für Informationen verwendet, die an anderer Stelle dargestellt werden. Jede Art von kritischen Informationen, die der Benutzer sofort auflösen muss, sollte in einem Dialogfeld oder im Fenster "Benachrichtigungen" bereitgestellt werden.
Die Visual Studio-Statusleiste ist so konzipiert, dass mehrere Arten von Informationen angezeigt werden können. Sie ist in Regionen für Feedback, Designer, Statusanzeige, Animation und Client unterteilt.
Die Feedbackregion und die Designerregion sind immer sichtbar. Die Statusleiste und Animationsbereiche sind immer dynamisch und basieren auf dem Benutzerkontext. Der Designerbereich weist eine statische Breite auf, die durch die Länge der Zeichenfolge bestimmt wird, die von einer begleitenden Ressource für die Textnachricht abgerufen wird. Auf diese Weise kann die Lokalisierung die Breite ändern, ohne dass eine Codeänderung erforderlich ist. Für Englisch beträgt die Breite dieser Zeichenfolge ungefähr 220 Pixel. Die Designerregion verhält sich normal, und die Feedbackregion nimmt den Raum wieder Standard auf.
Die Statusleiste wird auch farbige, um visuelles Interesse und funktionalen Wert hinzuzufügen, indem verschiedene IDE-Zustandsänderungen kommuniziert werden, z. B. wenn sich die IDE im Debugmodus befindet.
Farben der IDE-Statusleiste
Eingebettete Infoleiste
Eine Infoleiste kann oben in einem Dokumentfenster oder Toolfenster verwendet werden, um den Benutzer über einen Zustand oder eine Bedingung zu informieren. Es kann auch Befehle anbieten, damit der Benutzer eine Möglichkeit haben kann, auf einfache Weise Maßnahmen zu ergreifen. Die Infoleiste ist ein standardmäßiges Shell-Steuerelement. Vermeiden Sie das Erstellen eigener, die inkonsistent mit anderen in der IDE angezeigt wird. Informationen zu Implementierungsdetails und Verwendungsanleitungen finden Sie unter Infoleisten .
Eine in ein Dokumentfenster eingebettete Infoleiste, die den Benutzer darauf hinweist, dass sich die IDE im Verlaufsdebuggingmodus befindet, und der Editor reagiert nicht auf die gleiche Weise wie im Standarddebuggingmodus.
Mauscursoränderungen
Verwenden Sie beim Ändern des Mauszeigers Farben, die an den VSColor-Dienst gebunden sind und dem Cursor bereits zugeordnet sind. Cursoränderungen können für die Angabe eines laufenden Vorgangs sowie für Trefferzonen verwendet werden, in denen der Benutzer auf ein Ziel zeigt, das gezogen, abgelegt oder zum Auswählen eines Objekts verwendet werden kann.
Verwenden Sie den Mauszeiger "beschäftigt/warten", nur wenn alle verfügbaren CPU-Zeit für einen Vorgang reserviert werden müssen, hindern Sie den Benutzer daran, weitere Eingaben auszudrücken. In den meisten Fällen mit gut geschriebenen Anwendungen mit Multithreading sollten Zeiten, in denen Benutzer daran gehindert werden, andere Vorgänge auszuführen, selten sein.
Beachten Sie, dass Cursoränderungen als redundanter Hinweis für Informationen nützlich sind, die an anderer Stelle dargestellt werden. Verlassen Sie sich nicht auf eine Cursoränderung, da sie die einzige Art der Kommunikation mit dem Benutzer ist, insbesondere wenn Sie versuchen, etwas zu vermitteln, das entscheidend ist, dass der Benutzer adressieren muss.
Statusindikatoren
Statusanzeigen sind wichtig, um dem Benutzer während Prozessen Feedback zu geben, die mehr als ein paar Sekunden dauern. Statusanzeigen können direkt angezeigt werden (in der Nähe des Startpunkts der ausgeführten Aktion), in einer eingebetteten Statusleiste, in einem modalen Dialogfeld oder in der Visual Studio-Statusleiste. Befolgen Sie die Anleitungen in Progress-Indikatoren für deren Verwendung und Implementierung.
Visual Studio-Fenster "Benachrichtigungen"
Das Fenster "Visual Studio-Benachrichtigungen" benachrichtigt Entwickler über Lizenzierung, Umgebung (Visual Studio), Erweiterungen und Updates. Benutzer können einzelne Benachrichtigungen schließen oder bestimmte Arten von Benachrichtigungen ignorieren. Die Liste der ignorierten Benachrichtigungen wird auf einer Seite "Extras-Optionen>" verwaltet.
Das Fenster "Benachrichtigungen" ist zurzeit nicht erweiterbar.
Visual Studio-Toolfenster "Benachrichtigungen"
Fehlerliste
Eine Benachrichtigung in der Fehlerliste zeigt Fehler und Warnungen an, die während der Kompilierung und des Buildprozesses aufgetreten sind, und ermöglicht es dem Benutzer, in Code zu diesem spezifischen Codefehler zu navigieren.
Fehlerliste in Visual Studio
Eingebettete Statusleisten
Da die IDE-Statusleiste dynamisch ist, wobei der Kontext des Clientbereichs auf das aktive Dokumentfenster und Die Aktualisierung der Informationen im Kontext des Benutzers und/oder der Systemantworten festgelegt ist, ist es schwierig, eine fortlaufende Anzeige von Informationen zu Standard oder den Status bei langfristigen asynchronen Prozessen zu geben. Die IDE-Statusleiste eignet sich z. B. nicht für Benachrichtigungen über Testlaufergebnisse für mehrere Ausführungen und/oder sofort aktionen erfordernde Elementauswahlen. Es ist wichtig, solche Statusinformationen im Kontext des Dokument- oder Toolfensters beizubehalten, in dem der Benutzer eine Auswahl vornimmt oder einen Prozess startet.
Eingebettete Statusleiste in Visual Studio
Windows-Taskleistenbenachrichtigungen
Der Windows-Infobereich befindet sich neben der Systemuhr auf der Windows-Taskleiste. Viele Dienstprogramme und Softwarekomponenten bieten Symbole in diesem Bereich, sodass der Benutzer ein Kontextmenü für systemweite Aufgaben abrufen kann, z. B. Ändern der Bildschirmauflösung oder Abrufen von Softwareupdates.
Benachrichtigungen auf Umgebungsebene sollten im Visual Studio-Benachrichtigungshub angezeigt werden, nicht im Windows-Benachrichtigungsbereich.
Benachrichtigungsblasen
Benachrichtigungsblasen können als Information in einem Editor/Designer oder als Teil des Windows-Benachrichtigungsbereichs angezeigt werden. Der Benutzer nimmt diese Blasen als Probleme wahr, die er später beheben kann, was ein Vorteil für nicht kritische Benachrichtigungen ist. Blasen sind für kritische Informationen ungeeignet, die der Benutzer sofort lösen muss. Wenn Sie Benachrichtigungsblasen in Visual Studio verwenden, befolgen Sie die Windows Desktop-Anleitung für Benachrichtigungsblasen.
Benachrichtigungsblase im Windows-Benachrichtigungsbereich, der für Visual Studio verwendet wird
Statusindikatoren
Statusanzeigen sind ein wichtiger Bestandteil eines Benachrichtigungssystems, um dem Benutzer Feedback zu geben. Er teilt dem Benutzer mit, wann Prozesse und Vorgänge abgeschlossen werden. Bekannte Indikatortypen umfassen Statusanzeigen, sich drehende Cursor und animierte Symbole. Der Typ und die Platzierung einer Statusanzeige hängt vom Kontext ab, einschließlich der gemeldeten Angaben und der Dauer des Abschlusses des Vorgangs.
Faktoren
Um zu ermitteln, welcher Indikatortyp geeignet ist, müssen Sie die folgenden Faktoren bestimmen.
Anzeigedauer: Dauer des Vorgangs
Modalität: Gibt an, ob der Vorgang modal für die Umgebung ist (sperrt die Benutzeroberfläche, bis der Prozess abgeschlossen ist)
Persistent/Transient: Gibt an, ob das Endergebnis des Fortschritts zu einem späteren Zeitpunkt gemeldet und/oder sichtbar sein muss.
Bestimmt/unbestimmt: Gibt an, ob die Endzeit und der Fortschritt des Vorgangs berechnet werden können.
Grafik-/Textspeicherort: Gibt an, ob der Fortschritt oder der Prozess inline, im Textkörper einer Nachricht oder in einem bestimmten Steuerelement erfasst wird, z. B. das Struktursteuerelement
Näherung: Gibt an, ob sich der Fortschritt in unmittelbarer Nähe zur Benutzeroberfläche befinden soll, mit der er verbunden ist. (Kann es sich z. B. in der Statusleiste befinden, die weit entfernt ist, oder muss es sich in der Nähe der Schaltfläche befinden, die den Prozess gestartet hat?)
Bestimmen des Fortschritts
Statustyp | Wann und wie sie verwendet werden | Hinweise |
---|---|---|
Statusanzeige (bestimmt) | Dauer von >5 Sekunden erwartet. Kann textbezogene Beschreibung der Prozessdetails enthalten. |
TEXT NICHT in Animation einbetten. |
Infoleiste | Messaging, das mit kontextbezogener Benutzeroberfläche verknüpft ist. Siehe Infoleisten. Kann textbezogene Beschreibung der Prozessdetails enthalten. |
Verwenden Sie nicht mehrere Infoleisten, wenn Sie mehrere Prozesse angeben müssen. Verwenden Sie stattdessen gestapelte Statusanzeigen. |
Ausgabefenster | Vorübergehende Benachrichtigung: Prozess auf App-Ebene, den der Benutzer details nach Abschluss überprüfen möchte. | Verwenden Sie nicht , wenn der Benutzer später auf Daten verweisen muss. |
Protokolldatei | Gepaart mit undurchsichtigen Benachrichtigungen in Fällen, in dem es wichtig ist, Details nach Abschluss zu speichern . | |
Statusleiste | Vorübergehende Benachrichtigung: Prozess auf App-Ebene, den der Benutzer nach Abschluss nicht mehr benötigt . Enthält eine eingebettete Statusleiste. Kann textbezogene Beschreibung der Prozessdetails enthalten. |
Unbestimmter Fortschritt
Statustyp | Wann und wie sie verwendet werden | Hinweise |
---|---|---|
Statusanzeige (unbestimmt) | Dauer von >5 Sekunden erwartet. Kann textbezogene Beschreibung der Prozessdetails enthalten. |
TEXT NICHT in Animation einbetten. |
Ameisen (animierte horizontale Punkte) | Roundtrip zum Server. In der Nähe des Kontextpunkts über dem übergeordneten Container platziert. |
VERWENDEN SIE NICHT , wenn kein übergeordnetes Element durch den gesamten Container vorhanden ist. |
Drehfeld (Statusring) | Prozess, der kontextbezogenen UI zugeordnet ist oder wenn Platz eine Überlegung ist. Kann textbezogene Beschreibung der Prozessdetails enthalten. |
|
Infoleiste | Messaging, das mit kontextbezogener Benutzeroberfläche verknüpft ist. Siehe Infoleisten. | Verwenden Sie nicht mehrere Infoleisten, wenn Sie mehrere Prozesse angeben müssen. Verwenden Sie stattdessen gestapelte Statusanzeigen. |
Ausgabefenster | Vorübergehende Benachrichtigung: Prozess auf App-Ebene, den der Benutzer nach Abschluss des Vorgangs überprüfen möchte. | Verwenden Sie nicht für Informationen, die über Sitzungen hinweg beibehalten werden müssen. |
Protokolldatei | Gepaart mit undurchsichtigen Benachrichtigungen in Fällen, in dem es wichtig ist, Details nach Abschluss zu speichern . | |
Statusleiste | Vorübergehende Benachrichtigung: Prozess auf App-Ebene, den der Benutzer nach Abschluss nicht mehr benötigt . Enthält eingebettete Statusleiste. Kann textbezogene Beschreibung der Prozessdetails enthalten. |
Statusindikatortypen
Statusanzeigen
Unbestimmt
Unbestimmte Statusanzeige
"Unbestimmt" bedeutet, dass der Gesamtfortschritt eines Vorgangs oder Prozesses nicht bestimmt werden kann. Verwenden Sie unbestimmte Statusanzeigen für Vorgänge, die eine ungebundene Zeitspanne erfordern oder auf eine unbekannte Anzahl von Objekten zugreifen. Verwenden Sie eine Textbeschreibung, um das Geschehen zu begleiten. Verwenden Sie Timeouts, um Grenzen für zeitbasierte Vorgänge zu geben. Unbestimmte Statusanzeigen verwenden Animationen, um anzuzeigen, dass der Fortschritt erfolgt, aber keine anderen Informationen enthalten. Wählen Sie keine unbestimmte Statusanzeige basierend auf dem möglichen Mangel an Genauigkeit allein aus.
Determinieren
Bestimmte Statusanzeige
"Bestimmt" bedeutet, dass ein Vorgang oder Prozess eine bestimmte Zeitspanne erfordert, auch wenn diese Zeitspanne nicht genau vorhergesagt werden kann. Geben Sie eindeutig den Abschluss an. Lassen Sie eine Statusanzeige nicht auf 100 Prozent zu, es sei denn, der Vorgang wurde abgeschlossen. Die Animation für bestimmte Statusanzeigen bewegt sich von 0 nach rechts von 0 bis 100 %.
Bewegen Sie die Statusanzeige während eines Vorgangs niemals rückwärts. Der Balken sollte sich stetig vorwärts bewegen, wenn der Vorgang beginnt und 100 % erreicht, wenn er endet. Der Punkt der Statusanzeige besteht darin, dem Benutzer eine Vorstellung davon zu geben, wie lange der gesamte Vorgang dauert, unabhängig davon, wie viele Schritte beteiligt sind.
Gleichzeitige Berichterstellung (gestapelte Statusindikatoren)
Wenn ein Vorgang einen längeren Zeitraum ( vielleicht mehrere Minuten ) dauert, können zwei Statusanzeigen verwendet werden, eine, die den Gesamtfortschritt für einen Vorgang und eine weitere für den Fortschritt des aktuellen Schritts anzeigt. Wenn beispielsweise ein Setupprogramm viele Dateien kopiert, kann eine Statusanzeige verwendet werden, um anzugeben, wie lange der gesamte Prozess dauert, während eine Sekunde angibt, welcher Prozentsatz der aktuellen Datei oder des aktuellen Verzeichnisses kopiert wird. Melden Sie nicht mehr als fünf gleichzeitige Vorgänge oder Prozesse mithilfe von gestapelten Statusanzeigen. Wenn Sie mehr als fünf gleichzeitige Vorgänge oder Prozesse melden möchten, verwenden Sie ein modales Dialogfeld mit einer Schaltfläche "Abbrechen", und melden Sie die Statusdetails an das Ausgabefenster.
Textbeschreibungen
Verwenden Sie eine Textbeschreibung, um zu begleiten, was passiert, und die geschätzte Zeit für den Abschluss. Wenn es unmöglich ist, zu bestimmen, wie lange ein Vorgang dauern wird, ist eine bessere Wahl für das Senden von Feedback möglicherweise ein animiertes Symbol anstelle einer Statusleiste.
Visual Studio stellt in der Statusleiste eine Standardstatusleiste bereit, die von jedem in Visual Studio integrierten Produkt verwendet werden kann. Für textbezogene Beschreibungen, was während der Statusanzeige animiert wird, kann der Statusleistentext aktualisiert werden.
Weitere Statusindikatoren
Ameisen (animierte horizontale Punkte)
"Ameisen", animierte horizontale Punkte, stellen einen visuellen Verweis für einen unbestimmten Roundtrip-Serverprozess bereit.
Drehfeld (Statusring)
Der Drehfeld (auch als "Progress Ring" bezeichnet) ist ein unbestimmter Statusindikator, der hauptsächlich in Bezug auf kontextbezogene UI verwendet wird. Zeigen Sie einen Drehfeld in unmittelbarer Nähe zu seinen verwandten Inhalten an, z. B. eine Textkategoriekopfzeile, nachrichten oder ein Steuerelement.
Cursorfeedback
Für Vorgänge, die zwischen 2 und 7 Sekunden dauern, geben Sie Cursorfeedback an. In der Regel bedeutet dies die Verwendung des vom Betriebssystem bereitgestellten Wartecursors. Anleitungen finden Sie im MSDN-Artikel Cursors.Wait-Eigenschaft.
Statusanzeigeorte
Statusleiste
Die Statusleiste bietet Ihrer Anwendung einen Ort zum Anzeigen von Meldungen und nützlichen Informationen für den Benutzer, ohne die Arbeit des Benutzers zu unterbrechen. In der Regel wird der Status am unteren Rand eines Fensters angezeigt. Der Status für den Fortschritt ist ein QuickInfo-Bereich, der eine Meldung über das Maß des Fortschritts in Kombination mit einer Statusanzeige enthält.
Statusleiste mit Statusanzeige
Statusleiste mit Textbeschreibung
Infoleiste
Ähnlich wie in der Statusleiste bietet die Infoleiste kontextbezogene Benachrichtigungen und Nachrichten, die auch mit unbestimmten Statusindikatoren wie der Statusleiste oder dem Drehfeld gekoppelt werden können. Die Infoleiste sollte keinen präzisen Fortschritt oder eine bestimmte Statusanzeige bereitstellen. Siehe Infoleisten.
Infoleiste mit Statusleiste und Textbeschreibung
Inline
Die Inlinestatusanzeige kann durch jeden der Statusladeprogrammtypen dargestellt werden. In der Regel wird die Statusanzeige mit Messaging gekoppelt, dies ist jedoch keine Anforderung.
Drehfeld kombiniert mit textbezogener Beschreibung
Festgelegte gestapelte Statusindikatoren
Inlinetext des Server-Explorers: Wird aktualisiert...
Toolfenster
Die globale Statusanzeige wird durch eine unbestimmte Statusanzeige dargestellt, die direkt unterhalb der Symbolleiste positioniert ist.
Globale unbestimmte Statusanzeige für Team Explorer
Dialoge
Dialogfelder können jeden der Statusladeprogrammtypen enthalten. Statusindikatoren können mit Messaging kombiniert und mit mehreren Stufen der Fortschrittsanzeige kombiniert werden, um granulare und untergeordnete Prozesse darzustellen.
Visual Studio-Dialogfeld mit gleichzeitigen Prozessen und mehreren Statusanzeigetypen
Visual Studio-Dialogfeld mit Statusladeprogramm und Inlinebefehlen für Nachrichten
Dokument gut
Das Dokument kann mehrere Statusladeprogrammtypen in Kombination mit Steuerelementen anzeigen.
Unbestimmte Statusleiste unterhalb der Symbolleiste
Ausgabefenster
Das Ausgabefenster eignet sich für die Verarbeitung der Prozessentwicklung und den laufenden Status über Inlinetextnachrichten. Sie sollten die Statusleiste zusammen mit allen Statusberichten des Ausgabefensters verwenden.
Ausgabefenster mit laufendem Prozessstatus und Wartenachrichten
Infoleisten
Infoleisten geben dem Benutzer einen Indikator in der Nähe seiner Aufmerksamkeit und die Verwendung des freigegebenen Infoleisten-Steuerelements sorgt für Konsistenz bei visueller Darstellung und Interaktion.
Infoleisten in Visual Studio
Geeignete Verwendungsmöglichkeiten für eine Infoleiste
So weisen Sie dem Benutzer eine nicht blockierende, aber wichtige Nachricht zu, die für den aktuellen Kontext relevant ist
So geben Sie an, dass sich die Benutzeroberfläche in einem bestimmten Zustand oder in einem bestimmten Zustand befindet, der einige Interaktionsauswirkungen mit sich bringt, z. B. historisches Debuggen
So benachrichtigen Sie den Benutzer, dass das System Probleme erkannt hat, z. B. wenn eine Erweiterung Leistungsprobleme verursacht
Um dem Benutzer eine Einfache Aktion zu ermöglichen, z. B. wenn der Editor erkennt, dass eine Datei über gemischte Registerkarten und Leerzeichen verfügt
Gehen Sie wie folgt vor:
Halten Sie den Infoleistentext kurz und auf den Punkt.
Halten Sie den Text auf Links und Schaltflächen prägnant.
Stellen Sie sicher, dass die "Aktion"-Optionen, die Sie benutzern bereitstellen, minimal sind und nur erforderliche Aktionen angezeigt werden.
Vermeiden Sie Folgendes:
Verwenden Sie eine Infoleiste, um Standardbefehle anzubieten, die in einer Symbolleiste platziert werden sollen.
Verwenden Sie eine Infoleiste anstelle eines modalen Dialogfelds.
Erstellen Sie eine unverankerte Nachricht außerhalb eines Fensters.
Verwenden Sie mehrere Infoleisten an mehreren Stellen innerhalb desselben Fensters.
Können mehrere Infoleisten gleichzeitig angezeigt werden?
Ja, mehrere Infoleisten können gleichzeitig angezeigt werden. Sie werden in der reihenfolge "first come" angezeigt, wobei die erste Infoleiste oben und zusätzliche Infoleisten unten angezeigt werden.
Der Benutzer wird jeweils maximal drei Infoleisten sehen, nach denen, wenn weitere Infoleisten verfügbar sind, der Infoleistenbereich bildlauffähig wird.
Erstellen einer Infoleiste
Die Infoleiste enthält vier Abschnitte von links nach rechts:
Symbol: Hier fügen Sie ein beliebiges Symbol hinzu, das Sie für die Infoleiste anzeigen möchten, z. B. ein Warnsymbol.
Text: Sie können Text hinzufügen, um das Szenario/die Situation zu beschreiben, in dem sich der Benutzer befindet, zusammen mit Links innerhalb des Texts, falls erforderlich. Denken Sie daran, den Text prägnant zu halten.
Aktionen: Dieser Abschnitt sollte Links und Schaltflächen für Aktionen enthalten, die der Benutzer in der Infoleiste ausführen kann.
Schaltfläche "Schließen": Der letzte Abschnitt rechts kann eine Schaltfläche "Schließen" aufweisen.
Erstellen einer Standard-Infoleiste in verwaltetem Code
Die InfoBarModel-Klasse kann zum Erstellen einer Datenquelle für eine Infoleiste verwendet werden. Verwenden Sie einen der folgenden vier Konstruktoren:
public InfoBarModel(IEnumerable<IVsInfoBarTextSpan> textSpans, ImageMoniker image = default(ImageMoniker), bool isCloseButtonVisible = true);
public InfoBarModel(string text, ImageMoniker image = default(ImageMoniker), bool isCloseButtonVisible = true);
public InfoBarModel(IEnumerable<IVsInfoBarTextSpan> textSpans, IEnumerable<IVsInfoBarActionItem> actionItems, ImageMoniker image = default(ImageMoniker), bool isCloseButtonVisible = true);
public InfoBarModel(string text, IEnumerable<IVsInfoBarActionItem> actionItems, ImageMoniker image = default(ImageMoniker), bool isCloseButtonVisible = true);
Hier ist ein Beispiel, das ein InfoBarModel mit einem Text mit einem Link, einer Interaktiven Schaltfläche und einem Symbol erstellt.
var infoBar = new InfoBarModel(
textSpans: new[]
{
new InfoBarTextSpan("This is a "),
new InfoBarHyperlink("hyperlink"),
new InfoBarTextSpan(" InfoBar.")
},
actionItems: new[]
{
new InfoBarButton("Click Me")
},
image: KnownMonikers.StatusInformation,
isCloseButtonVisible: true);
Erstellen einer Standardinformationsleiste in systemeigenem Code
Implementieren Sie die IVsInfoBar-Schnittstelle, um eine Infoleiste aus systemeigenem Code bereitzustellen.
public interface IVsInfoBar
{
IVsInfoBarActionItemCollection ActionItems { get; }
ImageMoniker Image { get; }
bool IsCloseButtonVisible { get; }
IVsInfoBarTextSpanCollection TextSpans { get; }
}
Abrufen eines Infoleisten-UIElements aus einer Infoleiste
Die InfoBarModel- oder IVsInfoBar-Implementierung sind Datenmodelle, die in ein UIElement umgewandelt werden müssen, um in der Benutzeroberfläche angezeigt werden zu können. Ein UIElement kann mit dem SVsInfoBarUIFactory/IVsInfoBarUIFactory-Dienst abgerufen werden.
private bool TryCreateInfoBarUI(IVsInfoBar infoBar, out IVsInfoBarUIElement uiElement)
{
IVsInfoBarUIFactory infoBarUIFactory = serviceProvider.GetService(typeof(SVsInfoBarUIFactory)) as IVsInfoBarUIFactory;
if (infoBarUIFactory == null)
{
uiElement = null;
return false;
}
uiElement = infoBarUIFactory.CreateInfoBar(infoBar);
return uiElement != null;
}
Platzierung
Infoleisten können an einem oder mehreren der folgenden Speicherorte angezeigt werden:
Toolfenster
Innerhalb einer Dokumentregisterkarte
Wichtig
Es ist möglich, eine Infoleiste zu positionieren, um eine Nachricht über den globalen Kontext zu geben. Dies würde zwischen Symbolleisten und dem Dokument gut angezeigt. Dies wird nicht empfohlen, da es Probleme mit "Springen und Ruck" der IDE verursacht und vermieden werden sollte, es sei denn, es ist unbedingt erforderlich und angemessen.
Platzieren einer Infoleiste in einem ToolWindowPane
Die ToolWindowPane.AddInfoBar(IVsInfoBar)-Methode kann verwendet werden, um einem Toolfenster eine Infoleiste hinzuzufügen. Diese API kann entweder eine IVsInfoBar (von der InfoBarModel eine Standardimplementierung ist) oder ein IVsUIElement hinzufügen.
Platzieren einer Infoleiste in einem Dokument oder einem Nicht-ToolWindowPane
Wenn Sie eine Infoleiste in jedem IVsWindowFrame platzieren möchten, verwenden Sie die VSFPROPID_InfoBarHost-Eigenschaft, um die IVsInfoBarHost für den Frame abzurufen, und fügen Sie dann das Infoleisten-UIElement hinzu.
private void AddInfoBar(IVsWindowFrame frame, IVsUIElement uiElement)
{
IVsInfoBarHost infoBarHost;
if (TryGetInfoBarHost(frame, out infoBarHost))
{
infoBarHost.AddInfoBar(uiElement);
}
}
private bool TryGetInfoBarHost(IVsWindowFrame frame, out IVsInfoBarHost infoBarHost)
{
object infoBarHostObj;
if (ErrorHandler.Failed(frame.GetProperty((int)__VSFPROPID7.VSFPROPID_InfoBarHost, out infoBarHostObj)))
{
infoBarHost = null;
return false;
}
infoBarHost = infoBarHostObj as IVsInfoBarHost;
return infoBarHost != null;
}
Platzieren einer Infoleiste im Standard-Fenster
Um eine Infoleiste im Standard-Fenster zu platzieren, verwenden Sie die VSSPROPID_MainWindowInfoBarHost des IVsShell-Diensts, um die IVsInfoBarHost des Standard Fensters abzurufen, und fügen Sie ihr dann das Infoleisten-UIElement hinzu.
Weiß ich, wann der Benutzer eine Aktion in meiner Infoleiste ausführt?
Ja, wir geben jede Ereignisaktion an den Autor der Infoleiste zurück. Anschließend kann der Infoleistenautor basierend auf der Benutzerauswahl in der Infoleiste Maßnahmen in der IDE ergreifen. Infoleisten werden automatisch vom Host entfernt, auf dessen Schaltfläche "Schließen" geklickt wurde, aber zusätzliche Arbeit ist erforderlich, wenn andere Infoleisten nach dem Schließen entfernt werden müssen. Telemetrie muss auch unabhängig von jeder Infoleiste protokolliert werden.
Empfangen von Infoleistenereignissen in einem ToolWindowPane
ToolWindowPane verfügt über zwei Ereignisse für Infoleisten. Das InfoBarClosed-Ereignis wird ausgelöst, wenn eine Infoleiste im ToolWindowPane geschlossen wird. Das InfoBarActionItemClicked-Ereignis wird ausgelöst, wenn auf einen Link oder eine Schaltfläche innerhalb der Infoleiste geklickt wird.
Empfangen von Infoleistenereignissen direkt vom UIElement
IVsInfoBarUIElement.Advise kann verwendet werden, um Ereignisse direkt über das UIElement einer Infoleiste zu abonnieren. Durch die Implementierung von IVsInfoBarUIEvents kann der Autor Schließen- und Klickereignisse empfangen.
public interface IVsInfoBarUIEvents
{
void OnActionItemClicked(IVsInfoBarUIElement infoBarUIElement, IVsInfoBarActionItem actionItem);
void OnClosed(IVsInfoBarUIElement infoBarUIElement);
}
Fehlerüberprüfung
Wenn ein Benutzer Informationen eingibt, die nicht akzeptabel sind, z. B. wenn ein erforderliches Feld übersprungen wird oder Wenn Daten in das falsche Format eingegeben werden, empfiehlt es sich, die Steuerelementüberprüfung oder das Feedback in der Nähe des Steuerelements zu verwenden, anstatt ein Dialogfeld zum Blockieren von Popupfehlern zu verwenden.
Feldüberprüfung
Formular- und Feldüberprüfung besteht aus drei Komponenten: einem Steuerelement, einem Symbol und einer QuickInfo. Während mehrere Arten von Steuerelementen dies verwenden können, wird ein Textfeld als Beispiel verwendet.
Wenn das Feld erforderlich ist, sollte Wasserzeichentext mit der Angabe <"Erforderlich>" vorhanden sein, und der Feldhintergrund sollte hellgelb sein (VSColor: Environment.ControlEditRequiredBackground
) und der Vordergrund sollte grau sein (VSColor: Environment.ControlEditRequiredHintText
):
Das Programm kann feststellen, dass sich das Steuerelement in einem Zustand ungültiger Inhalte befindet, der entweder eingegeben wird, wenn der Fokus auf ein anderes Steuerelement verschoben wird oder wenn der Benutzer auf eine [OK]-Commit-Schaltfläche klickt oder wenn der Benutzer das Dokument oder Formular speichert.
Wenn der ungültige Inhaltsstatus bestimmt wird, wird ein Symbol entweder innerhalb des Steuerelements oder direkt daneben angezeigt. Eine QuickInfo, die den Fehler beschreibt, sollte beim Daraufzeigen des Symbols oder des Steuerelements angezeigt werden. Darüber hinaus sollte ein 1-Pixel-Rahmen um das Steuerelement herum angezeigt werden, das den ungültigen Zustand erstellt.
Layoutspezifikationen für die Feldüberprüfung
Zulässige Variationen für die Symbolposition
Es gibt unzählige eindeutige Fälle, in denen Benutzer über Überprüfungsfehler informiert werden müssen. Wählen Sie unter Berücksichtigung des Steuerelementtyps und der Konfiguration der Benutzeroberfläche die für Ihre Situation geeignete Symbolplatzierung aus.
Zulässige Variationen für Feldüberprüfungssymbolspeicherorte
Überprüfung, die einen Roundtrip zu einem Server oder einer Netzwerkverbindung erfordert
In einigen Fällen ist ein Roundtrip zum Server erforderlich, um den Inhalt zu überprüfen, und es wäre wichtig, den Status des Benutzers, überprüft und Fehlerzustände anzuzeigen. Die folgende Abbildung zeigt ein Beispiel für diesen Fall und die empfohlene Benutzeroberfläche.
Überprüfung eines Roundtrips zu einem Server
Beachten Sie, dass ausreichend verfügbarer Platz rechts vom Steuerelement bereitgestellt werden muss, um die "Verifying..." und "Wiederholen"-Text.
In-Situ-Warntext
Wenn platz verfügbar ist, um die Fehlermeldung nahe am Steuerelement in einen Fehlerzustand zu setzen, ist dies der Verwendung der QuickInfo allein vorzuziehen.
In-Situ-Warntext
Wasserzeichen
Manchmal befindet sich ein gesamtes Steuerelement oder Fenster in einem Fehlerzustand. Verwenden Sie in diesem Fall ein Wasserzeichen, um den Fehler anzuzeigen.
Feldüberprüfung für Wasserzeichen