Modelli delle applicazioni per Visual Studio
Interazioni tra finestre
I due tipi di finestra principali usati in Visual Studio sono editor di documenti e finestre degli strumenti. Raramente, ma possibile, sono dialoghi non modali di grandi dimensioni. Anche se questi sono tutti modeless nella shell, i loro modelli sono fondamentalmente diversi. Questa sezione illustra la differenza tra finestre documento, finestre degli strumenti e finestre di dialogo senza modalità. I modelli di dialogo modali sono trattati in Finestre di dialogo.
Confronto dei modelli di utilizzo delle finestre
Le finestre dei documenti vengono quasi sempre visualizzate all'interno dell'area documento. In questo modo l'editor di documenti dispone di una "fase centrale" per disporre finestre degli strumenti supplementari.
Una finestra degli strumenti viene spesso visualizzata come finestra separata e più piccola compressa rispetto al bordo dell'IDE. Può essere visibile, nascosta o nascosta automaticamente. Tuttavia, a volte le finestre degli strumenti vengono presentate all'interno dell'area documento deselezionando la proprietà Window/Dock nella finestra. Ciò comporta un maggior numero di immobili, ma anche una decisione di progettazione comune: quando si tenta di integrarsi in Visual Studio, è necessario decidere se la funzionalità deve visualizzare una finestra degli strumenti o una finestra di documento.
Le finestre di dialogo senza modalità sono sconsigliate in Visual Studio. La maggior parte dei dialoghi modeless sono, per definizione, finestre degli strumenti mobili e devono essere implementate in questo modo. Le finestre di dialogo senza modalità sono consentite nei casi in cui la dimensione di una normale finestra degli strumenti ancorata al lato della shell sarebbe troppo limitata. Sono consentiti anche nei casi in cui l'utente potrebbe spostare la finestra di dialogo in un monitor secondario.
Considerare attentamente il tipo di contenitore necessario. Le considerazioni comuni sui modelli di utilizzo per la progettazione dell'interfaccia utente sono riportate nella tabella seguente.
Finestra documento | Finestra degli strumenti | Finestra di dialogo senza modalità | |
---|---|---|---|
Posizione | Sempre posizionato all'interno dell'area del documento e non ancora intorno ai bordi dell'IDE. Può essere "estratto" in modo che float separatamente dalla shell principale. | In genere ancorato a schede intorno ai bordi dell'IDE, ma può essere personalizzato per essere mobile, nascosto automaticamente (non bloccato) o ancorato all'interno dell'area del documento. | Finestra mobile grande separata dall'IDE. |
Eseguire il commit del modello | Commit ritardato Per salvare i dati in un documento, l'utente deve eseguire il > comando Salva file, Salva con nome o Salva tutto. Una finestra del documento ha il concetto di dati all'interno di esso "deviati" e quindi ne viene eseguito il commit in uno dei comandi di salvataggio. Quando si chiude una finestra del documento, tutti i contenuti vengono salvati su disco o persi. |
Commit immediato Non esiste alcun modello di salvataggio. Per le finestre degli strumenti di controllo che consentono di modificare un file, il file deve essere aperto nell'editor o nella finestra di progettazione attiva e l'editor o la finestra di progettazione possiede il salvataggio. |
Commit ritardato o immediato Nella maggior parte dei casi, un dialogo modeless di grandi dimensioni richiede un'azione per eseguire il commit delle modifiche e consente un'operazione "Annulla", che esegue il rollback delle modifiche apportate all'interno della sessione della finestra di dialogo. In questo modo un dialogo senza modalità viene differenziato da una finestra degli strumenti in tale finestra degli strumenti con un modello di commit immediato. |
Visibilità | Apri/Crea (file) e Chiudi L'apertura di una finestra di documento viene eseguita tramite l'apertura di un documento esistente o l'uso di un modello per creare un nuovo documento. Non è disponibile alcun comando "Apri <editor> specifico". |
Nascondi e mostra Le finestre degli strumenti a istanza singola possono essere nascoste o visualizzate. Il contenuto e gli stati all'interno della finestra degli strumenti vengono mantenuti nella visualizzazione o nascosta. Le finestre degli strumenti a istanze multipla possono essere chiuse e nascoste. Quando una finestra degli strumenti a istanze multipla viene chiusa, il contenuto e lo stato all'interno della finestra degli strumenti vengono eliminati. |
Avviato da un comando I dialoghi vengono avviati da un comando basato su attività. |
Istanze | Istanze multiistanza È possibile aprire più editor contemporaneamente e modificare file diversi, mentre alcuni editor consentono anche l'apertura dello stesso file in più di un editor (usando il comando Finestra nuova finestra>). Un singolo editor può modificare uno o più file contemporaneamente (Progettazione progetti). |
Istanza singola o multipla Il contenuto cambia in base al contesto (come nel Visualizzatore proprietà) o sposta lo stato attivo/contesto in altre finestre (Elenco attività, Esplora soluzioni). Le finestre degli strumenti a istanza singola e a istanza multipla devono essere associate alla finestra del documento attiva, a meno che non esista un motivo interessante. |
Istanza singola |
Esempi | Editor di testo, ad esempio l'editor di codice Progettare superfici, ad esempio una finestra di progettazione di moduli o un'area di modellazione Layout di controllo simili ai dialoghi, ad esempio Progettazione manifesto |
Il Esplora soluzioni fornisce una soluzione e progetti contenuti nella soluzione Esplora server offre una visualizzazione gerarchica dei server e delle connessioni dati che l'utente sceglie di aprire nella finestra. L'apertura di un oggetto dalla gerarchia di database, ad esempio una query, apre una finestra del documento e consente all'utente di modificare la query. Il Visualizzatore proprietà visualizza le proprietà per l'oggetto selezionato in una finestra del documento o in un'altra finestra degli strumenti. Le proprietà vengono presentate in una visualizzazione griglia gerarchica o in controlli complessi simili a finestre di dialogo e consentono all'utente di impostare i valori per tali proprietà. |
Finestre degli strumenti
Le finestre degli strumenti supportano il lavoro dell'utente che si verifica nelle finestre dei documenti. Possono essere usati per visualizzare una gerarchia che rappresenta un oggetto radice fondamentale fornito da Visual Studio e che può essere modificato.
Quando si considera una nuova finestra degli strumenti nell'IDE, gli autori devono:
Usare le finestre degli strumenti esistenti appropriate per le attività e non crearne di nuove con funzionalità simili. Le nuove finestre degli strumenti devono essere create solo se offrono uno "strumento" o una funzionalità significativamente diversa che non può essere integrata in una finestra simile o trasformando una finestra esistente in un hub di pivot.
Usare una barra dei comandi standard, se necessario, nella parte superiore della finestra degli strumenti.
Essere coerenti con i modelli già presenti in altre finestre degli strumenti per la presentazione del controllo e lo spostamento tramite tastiera.
Essere coerenti con la presentazione del controllo in altre finestre degli strumenti.
Rendere visibili automaticamente le finestre degli strumenti specifiche del documento, in modo che vengano visualizzate solo quando il documento padre viene attivato.
Assicurarsi che il contenuto della finestra sia navigabile tramite la tastiera (supporta i tasti di direzione).
Stati della finestra degli strumenti
Le finestre degli strumenti di Visual Studio hanno stati diversi, alcuni dei quali sono attivati dall'utente (ad esempio la funzionalità nascondi automaticamente). Altri stati, ad esempio visibili automaticamente, consentono di visualizzare le finestre degli strumenti nel contesto corretto e di nascondersi quando non necessario. Sono presenti cinque stati della finestra degli strumenti in totale.
Le finestre degli strumenti ancorate/bloccate possono essere collegate a uno dei quattro lati dell'area documento. L'icona della puntina da disegno viene visualizzata nella barra del titolo della finestra degli strumenti. La finestra degli strumenti può essere ancorata orizzontalmente o verticalmente lungo il bordo della shell e di altre finestre degli strumenti e può anche essere collegata tramite tabulazioni.
Le finestre degli strumenti nascoste automaticamente vengono rimosse. La finestra può uscire dalla vista, lasciando una scheda (con il nome della finestra degli strumenti e la relativa icona) sul bordo dell'area del documento. La finestra degli strumenti scorre quando un utente passa il puntatore del mouse sulla scheda.
Le finestre degli strumenti visibili automaticamente vengono visualizzate automaticamente quando un'altra parte dell'interfaccia utente, ad esempio un editor, viene avviata o aumenta lo stato attivo.
Le finestre degli strumenti mobili passano il mouse all'esterno dell'IDE. Ciò è utile per le configurazioni multi-monitor.
Le finestre degli strumenti documento a schede possono essere ancorate all'interno dell'area documento. Ciò è utile per finestre degli strumenti di grandi dimensioni, come il Visualizzatore oggetti, che necessitano di più proprietà rispetto all'ancoraggio ai bordi del frame consente.
Stati della finestra degli strumenti in Visual Studio
Istanza singola e multiistanza
Le finestre degli strumenti sono a istanza singola o a istanza multipla. Alcune finestre degli strumenti a istanza singola potrebbero essere associate alla finestra del documento attiva, mentre le finestre degli strumenti a istanze multipla potrebbero non essere presenti. Le finestre degli strumenti a istanze multipla rispondono al comando Finestra > nuova finestra creando una nuova istanza della finestra. L'immagine seguente illustra una finestra degli strumenti che abilita il comando Nuova finestra quando è attiva un'istanza della finestra:
Finestra degli strumenti che abilita il comando "Nuova finestra" quando un'istanza della finestra è attiva
Le finestre degli strumenti a istanza singola possono essere nascoste o visualizzate, mentre le finestre degli strumenti a istanza multipla possono essere chiuse e nascoste. Tutte le finestre degli strumenti possono essere ancorate, collegate a schede, mobili o impostate come finestra figlio MDI (Multiple-Document Interface) (simile a una finestra del documento). Tutte le finestre degli strumenti devono rispondere ai comandi di gestione delle finestre appropriati nel menu Finestra:
Comandi di gestione delle finestre nel menu Finestra di Visual Studio
Finestre degli strumenti specifiche del documento
Alcune finestre degli strumenti sono progettate per cambiare in base a un determinato tipo di documento. Queste finestre vengono continuamente aggiornate in modo da riflettere le funzionalità applicabili alla finestra del documento attivo nell'IDE.
Esempi di finestre degli strumenti il cui contenuto viene modificato in modo da riflettere l'editor selezionato sono la casella degli strumenti e la struttura documento. Queste finestre mostrano una filigrana quando un editor ha lo stato attivo che non offre contesto alla finestra.
Finestre degli strumenti elenco esplorabili
Alcune finestre degli strumenti visualizzano un elenco di elementi navigabili con cui l'utente può interagire. In questo tipo di finestra dovrebbe essere sempre presente un feedback per l'elemento corrente nell'elenco, anche se la finestra è inattiva. L'elenco deve rispondere ai comandi GoToNextLocation e GoToPrevLocation modificando anche l'elemento attualmente selezionato nella finestra
Esempi di finestre degli strumenti di elenco esplorabili sono la Esplora soluzioni e la finestra Risultati ricerca.
Tipi di finestra degli strumenti
Finestre degli strumenti comuni e relative funzioni
Finestre degli strumenti gerarchici
Finestra degli strumenti | Funzione |
---|---|
Esplora soluzioni | Albero gerarchico che visualizza un elenco di documenti contenuti in progetti, file esterni ed elementi della soluzione. La visualizzazione degli elementi all'interno dei progetti è definita dal pacchetto proprietario del tipo di progetto ( ad esempio, tipi basati su riferimenti, basati su directory o in modalità mista). |
Visualizzazione classi | Albero gerarchico delle classi e dei vari elementi nel working set di documenti, indipendentemente dai file stessi. |
Esplora server | Albero gerarchico che visualizza tutti i server e le connessioni dati nella soluzione. |
Struttura documento | Struttura gerarchica del documento attivo. |
Finestre degli strumenti griglia
Finestra degli strumenti | Funzione |
---|---|
Proprietà | Griglia che visualizza un elenco di proprietà per l'oggetto selezionato, insieme ai selettore di valori per modificare tali proprietà. |
Elenco attività | Griglia che consente all'utente di creare/modificare/eliminare attività e commenti. |
Finestre degli strumenti contenuto
Finestra degli strumenti | Funzione |
---|---|
Icona ? | Finestra che consente agli utenti di accedere a vari metodi di assistenza, dai video "Come posso?" ai forum MSDN. |
Guida dinamica | Finestra degli strumenti che visualizza i collegamenti agli argomenti della Guida applicabili alla selezione corrente. |
Visualizzatore oggetti | Un frameset a due colonne con un elenco di componenti di oggetti gerarchici nel riquadro sinistro e le proprietà e i metodi dell'oggetto nella colonna destra. |
Finestre degli strumenti di dialogo
Finestra degli strumenti | Funzione |
---|---|
Trova | Finestra di dialogo che consente all'utente di trovare o trovare e sostituire in vari file all'interno della soluzione. |
Ricerca avanzata | Finestra di dialogo che consente all'utente di trovare o trovare e sostituire in vari file all'interno della soluzione. |
Altre finestre degli strumenti
Finestra degli strumenti | Funzione |
---|---|
Casella degli strumenti | La finestra degli strumenti usata per archiviare gli elementi che verranno rilasciati nelle superfici di progettazione, fornendo un'origine di trascinamento coerente per tutte le finestre di progettazione. |
Finestre degli strumenti del debugger
Finestra degli strumenti | Funzione |
---|---|
Auto | |
Immediate | |
Output | La finestra di output può essere usata ogni volta che si dispone di eventi o stato testuali da dichiarare. |
Memoria | |
Punti di interruzione | |
In esecuzione | |
Documenti | |
Stack di chiamate | |
Variabili locali | |
Guarda | |
Disassembly | |
Registri | |
Threads |
Convenzioni dell'editor di documenti
Interazioni tra documenti
Il "document well" è lo spazio più grande all'interno dell'IDE ed è dove l'utente in genere ha concentrato la propria attenzione per completare le attività, assistito da finestre degli strumenti supplementari. Gli editor di documenti rappresentano le unità di lavoro fondamentali che l'utente apre e salva in Visual Studio. Mantengono un forte senso di selezione legato a Esplora soluzioni o ad altre finestre della gerarchia attiva. L'utente deve essere in grado di puntare a una di queste finestre della gerarchia e sapere dove è contenuto il documento e la relativa relazione con la soluzione, il progetto o un altro oggetto radice fornito da un pacchetto di Visual Studio.
La modifica dei documenti richiede un'esperienza utente coerente. Per consentire all'utente di concentrarsi sull'attività invece di gestire le finestre e trovare comandi, selezionare una strategia di visualizzazione documento più adatta alle attività utente per la modifica del tipo di documento.
Interazioni comuni per il documento
Mantenere un modello di interazione coerente nelle esperienze comuni New File e Open File .
Aggiornare le funzionalità correlate in finestre e menu correlati all'apertura della finestra del documento.
I comandi di menu sono integrati in modo appropriato nei menu comuni, ad esempio Modifica, Formato e Visualizza menu. Se sono disponibili una notevole quantità di comandi specializzati, è possibile creare un nuovo menu. Questo nuovo menu deve essere visibile solo quando il documento ha lo stato attivo.
Una barra degli strumenti incorporata può essere posizionata nella parte superiore dell'editor. È preferibile disporre di una barra degli strumenti separata visualizzata all'esterno dell'editor.
Mantenere sempre una selezione nella finestra Esplora soluzioni o nella gerarchia attiva simile.
Fare doppio clic su un documento nel Esplora soluzioni deve eseguire la stessa azione di Apri.
Se è possibile utilizzare più editor in un tipo di documento, l'utente deve essere in grado di eseguire l'override o reimpostare l'azione predefinita in un determinato tipo di documento usando la finestra di dialogo Apri con facendo clic con il pulsante destro del mouse sul file e scegliendo Apri con dal menu di scelta rapida.
Non creare una procedura guidata in un documento.
Aspettative utente per tipi di documento specifici
Esistono diversi tipi di base di editor di documenti e ognuno ha un set di interazioni coerenti con altri dello stesso tipo.
Editor basato su testo: editor di codice, file di log
Area di progettazione: Progettazione moduli WPF, Windows Form
Editor di stile finestra di dialogo: Progettazione manifesto, proprietà del progetto
Progettazione modelli: progettazione flussi di lavoro, mappa codice, diagramma dell'architettura, progressione
Esistono anche diversi tipi non editor che usano l'area documento. Anche se non modificano i documenti stessi, devono seguire le interazioni standard per le finestre dei documenti.
Report: report IntelliTrace, report Hyper-V, report profiler
Dashboard: Hub di diagnostica
Editor basati su testo
Il documento partecipa al modello di scheda di anteprima, consentendo di visualizzare in anteprima il documento senza aprirlo.
La struttura del documento può essere rappresentata all'interno di una finestra degli strumenti complementare, ad esempio una struttura del documento.
IntelliSense (se appropriato) si comporta in modo coerente con altri editor di codice.
I popup o l'interfaccia utente di assistive seguono stili e modelli simili per un'interfaccia utente simile esistente, ad esempio CodeLens.
I messaggi relativi allo stato del documento verranno presentati in un controllo della barra delle informazioni nella parte superiore del documento o nella barra di stato.
L'utente deve essere in grado di personalizzare l'aspetto dei tipi di carattere e dei colori usando una pagina Opzioni strumenti>, ovvero la pagina tipi di carattere e colori condivisi o una specifica per l'editor.
Superfici di progettazione
Una finestra di progettazione vuota deve avere una filigrana sulla superficie che indica come iniziare.
I meccanismi di cambio di visualizzazione seguiranno modelli esistenti, ad esempio doppio clic per aprire un editor di codice o schede all'interno della finestra del documento, consentendo l'interazione con entrambi i riquadri.
L'aggiunta di elementi all'area di progettazione deve essere eseguita tramite la casella degli strumenti, a meno che non sia necessaria una finestra degli strumenti altamente specifica.
Gli elementi sulla superficie seguiranno un modello di selezione coerente.
Le barre degli strumenti incorporate contengono solo comandi specifici del documento, non comandi comuni, ad esempio Salva.
Editor di stile dialogo
Il layout del controllo deve seguire le normali convenzioni di layout del dialogo.
Le schede all'interno dell'editor non devono corrispondere all'aspetto delle schede del documento, ma devono corrispondere a uno dei due stili di tabulazioni interne consentiti.
Gli utenti devono essere in grado di interagire con i controlli solo usando la tastiera; attivando l'editor e la tabulazione tramite controlli o usando mnemonic standard.
La finestra di progettazione deve usare il modello di salvataggio comune. Sulla superficie non devono essere posizionati pulsanti di salvataggio o commit complessivi, anche se altri pulsanti possono essere appropriati.
Finestre di progettazione dei modelli
Una finestra di progettazione vuota deve avere una filigrana sulla superficie che indica come iniziare.
L'aggiunta di elementi all'area di progettazione deve essere eseguita tramite la casella degli strumenti.
Gli elementi sulla superficie seguiranno un modello di selezione coerente.
Le barre degli strumenti incorporate contengono solo comandi specifici del documento, non comandi comuni, ad esempio Salva.
Una legenda può essere visualizzata sulla superficie, indicativa o filigrana.
L'utente deve essere in grado di personalizzare l'aspetto dei tipi di carattere/colori usando una pagina Opzioni strumenti>, la pagina Tipi di carattere e colori condivisi o una specifica dell'editor.
Report
I report sono in genere solo informazioni e non partecipano al modello di salvataggio. Tuttavia, possono includere interazioni, ad esempio collegamenti ad altre informazioni o sezioni pertinenti che si espandono e comprimono.
La maggior parte dei comandi sulla superficie deve essere collegamenti ipertestuali, non pulsanti.
Il layout deve includere un'intestazione e seguire le linee guida standard per il layout del report.
Dashboard
I dashboard non hanno un modello di interazione, ma servono come mezzo per offrire una varietà di altri strumenti.
Non partecipano al modello Salva.
Gli utenti devono essere in grado di interagire con i controlli usando solo la tastiera, attivando l'editor e la tabulazione tramite controlli o utilizzando mnemonic standard.
Finestre di dialogo
Introduzione
Le finestre di dialogo in Visual Studio devono in genere supportare un'unità discreta del lavoro dell'utente e quindi essere ignorate.
Se si è determinato che è necessaria una finestra di dialogo, sono disponibili tre opzioni, in ordine di preferenza:
Integrare le funzionalità in una delle finestre di dialogo condivise in Visual Studio.
Creare un dialogo personalizzato usando un modello trovato in un dialogo simile esistente.
Creare una nuova finestra di dialogo, seguendo le linee guida per l'interazione e il layout.
Questa sezione descrive come scegliere il modello di dialogo corretto nei flussi di lavoro di Visual Studio e le convenzioni comuni per la progettazione della finestra di dialogo.
Temi
Le finestre di dialogo in Visual Studio seguono uno dei due stili di base:
Standard (senza errori)
La maggior parte dei dialoghi sono finestre di dialogo di utilità standard e devono essere annullate. Non ricreare controlli comuni o tentare di creare pulsanti o controlli "moderni" stilizzati. I controlli e l'aspetto chrome seguono le linee guida standard per l'interazione con Windows Desktop per le finestre di dialogo.
Tema
I dialoghi speciali di "firma" possono essere temati. I dialoghi a tema hanno un aspetto distinto, che ha anche alcuni modelli di interazione speciali associati allo stile. Tema della finestra di dialogo solo se soddisfa questi requisiti:
Il dialogo è un'esperienza comune che verrà visualizzata e usata spesso o da molti utenti , ad esempio la finestra di dialogo Nuovo progetto .
La finestra di dialogo contiene elementi importanti del marchio del prodotto( ad esempio, la finestra di dialogo Account Impostazioni).
La finestra di dialogo viene visualizzata come parte integrante di un flusso più ampio che include altre finestre di dialogo con tema( ad esempio, la finestra di dialogo Aggiungi servizio Connessione ed).
Il dialogo è una parte importante di un'esperienza che svolge un ruolo strategico nel promuovere o differenziare una versione del prodotto.
Quando si crea un dialogo a tema, usare i colori dell'ambiente appropriati e seguire i modelli di layout e interazione corretti. (Vedere Layout per Visual Studio.
Progettazione della finestra di dialogo
I dialoghi ben progettati prendono in considerazione gli elementi seguenti:
Attività utente supportata
Stile, lingua e terminologia del testo del dialogo
Controllare le convenzioni di scelta e interfaccia utente
Specifica del layout visivo e allineamento dei controlli
Accesso da tastiera
Organizzazione dei contenuti
Considerare le differenze tra questi tipi di dialoghi di base:
I dialoghi semplici presentano controlli in una singola finestra modale. La presentazione può includere varianti di modelli di controllo complessi, tra cui una selezione campi o una barra delle icone.
Le finestre di dialogo a più livelli vengono usate per sfruttare al meglio lo spazio sullo schermo quando un'unica parte dell'interfaccia utente comprende più gruppi di controlli. I raggruppamenti della finestra di dialogo sono "a più livelli" tramite controlli struttura a schede, controlli elenco di spostamento o pulsanti in modo che l'utente possa scegliere il raggruppamento da visualizzare in un determinato momento.
Le procedure guidate sono utili per indirizzare l'utente tramite una sequenza logica di passaggi verso il completamento di un'attività. Nei pannelli sequenziali vengono offerte una serie di scelte, talvolta introducendo flussi di lavoro diversi ("rami") dipendenti da una scelta effettuata nel pannello precedente.
Dialoghi semplici
Una finestra di dialogo semplice è una presentazione di controlli in una singola finestra modale. Questa presentazione può includere varianti di modelli di controllo complessi, ad esempio una selezione campi. Per i dialoghi semplici, seguire il layout generale standard e qualsiasi layout specifico necessario per i raggruppamenti di controlli complessi.
Creare una chiave con nome sicuro è un esempio di una semplice finestra di dialogo in Visual Studio.
Dialoghi a più livelli
Le finestre di dialogo a più livelli includono schede, dashboard e alberi incorporati. Vengono usati per ottimizzare il patrimonio immobiliare quando sono presenti più gruppi di controlli offerti in un'unica interfaccia utente. I raggruppamenti vengono raggruppati in modo che l'utente possa scegliere il raggruppamento da visualizzare in qualsiasi momento.
Nel caso più semplice, il meccanismo per il passaggio tra i raggruppamenti è un controllo struttura a schede. Sono disponibili diverse alternative. Per informazioni su come scegliere lo stile più appropriato, vedere Assegnazione di priorità e livelli.
La finestra di dialogo Opzioni strumenti > è un esempio di finestra di dialogo a più livelli che usa un albero incorporato:
Opzioni strumenti > è un esempio di finestra di dialogo a più livelli in Visual Studio.
Procedure guidate
Le procedure guidate sono utili per indirizzare l'utente tramite una sequenza logica di passaggi nel completamento di un'attività. Nei pannelli sequenziali è disponibile una serie di scelte e l'utente deve continuare a eseguire ogni passaggio prima di procedere alla successiva. Quando sono disponibili impostazioni predefinite sufficienti, il pulsante Fine è abilitato.
Le procedure guidate modali vengono usate per le attività che:
Contenere la diramazione, in cui vengono offerti percorsi diversi a seconda delle scelte dell'utente
Contenere dipendenze tra i passaggi, in cui i passaggi successivi dipendono dall'input dell'utente dei passaggi precedenti
Sono sufficientemente complessi che l'interfaccia utente deve essere usata per spiegare le scelte offerte e i possibili risultati in ogni passaggio
Sono transazionali, richiedendo il completamento di un set di passaggi prima che venga eseguito il commit di eventuali modifiche
Convenzioni comuni
Per ottenere una progettazione e funzionalità ottimali con i dialoghi, seguire queste convenzioni sulle dimensioni del dialogo, la posizione, gli standard, la configurazione e l'allineamento del controllo, il testo dell'interfaccia utente, le barre del titolo, i pulsanti di controllo e i tasti di scelta.
Per linee guida specifiche per il layout, vedere Layout per Visual Studio.
Dimensione
Le finestre di dialogo devono rientrare entro una risoluzione minima dello schermo di 1024x768 e le dimensioni iniziali del dialogo non devono superare i 900x700 pixel. I dialoghi possono essere ridimensionabili, ma non è un requisito.
Esistono due consigli per i dialoghi ridimensionabili:
Che una dimensione minima sia definita per il dialogo che consente di ottimizzare il set di controlli senza ritagliare e adattarsi per adattarsi alla crescita ragionevole della localizzazione.
Le dimensioni ridimensionate dall'utente vengono mantenute dalla sessione alla sessione. Ad esempio, se l'utente ridimensiona un dialogo al 150%, verrà visualizzato un successivo avvio della finestra di dialogo al 150%.
Position
Le finestre di dialogo devono essere visualizzate centrate all'interno dell'IDE al primo avvio. Non è necessario rendere persistenti l'ultima posizione dei dialoghi non ridimensionabili, in modo che vengano visualizzati al centro sui lanci successivi.
Per i dialoghi ridimensionabili, le dimensioni devono essere mantenute nei lanci successivi. Per i dialoghi modali ridimensionabili, la posizione non deve essere mantenuta. La visualizzazione al centro dell'IDE impedisce la visualizzazione della finestra di dialogo in una posizione imprevedibile o inutilizzabile quando la configurazione della visualizzazione dell'utente è cambiata.
Per i dialoghi modeless che possono essere riposizionati, la posizione dell'utente deve essere mantenuta nei lanci successivi, perché il dialogo potrebbe essere usato spesso come parte integrante di un flusso di lavoro più grande.
Quando le finestre di dialogo devono generare altri dialoghi, il dialogo in alto dovrebbe essere a cascata a destra e verso il basso dall'elemento padre in modo che sia ovvio all'utente che si è spostato in una nuova posizione.
Modalità
Essere modali significa che gli utenti devono completare o annullare la finestra di dialogo prima di continuare. Poiché i dialoghi modali impediscono all'utente di interagire con altre parti dell'ambiente, il flusso di attività della funzionalità deve usarli il più possibile. Quando è necessaria un'operazione modale, Visual Studio include una serie di dialoghi condivisi in cui è possibile integrare le funzionalità. Se è necessario creare un nuovo dialogo, seguire il modello di interazione di un dialogo esistente con funzionalità simili.
Quando gli utenti devono eseguire due attività contemporaneamente, ad esempio Trova e sostituisci durante la scrittura di nuovo codice, la finestra di dialogo deve essere senza modalità in modo che l'utente possa passare facilmente da una all'altra. Visual Studio usa in genere le finestre degli strumenti per questo tipo di attività collegata di supporto dell'editor.
Controllare la configurazione
Essere coerenti con le configurazioni di controllo esistenti che esegono la stessa operazione in Visual Studio.
Barre del titolo
Il testo nella barra del titolo deve riflettere il nome del comando che lo ha avviato.
Nessuna icona deve essere usata nelle barre del titolo della finestra di dialogo. Nei casi in cui il sistema ne richiede uno, usare il logo di Visual Studio.
I dialoghi non devono contenere pulsanti per ridurre al minimo o ingrandire.
I pulsanti della Guida nella barra del titolo sono stati deprecati. Non aggiungerli ai nuovi dialoghi. Quando esistono, devono avviare un argomento della Guida concettuale rilevante per l'attività.
Specifiche delle linee guida per le barre del titolo nelle finestre di dialogo di Visual Studio
Pulsanti di controllo
In generale, i pulsanti OK, Annulla e Guida devono essere disposti orizzontalmente nell'angolo inferiore destro della finestra di dialogo. Lo stack verticale alternativo è consentito se un dialogo ha diversi altri pulsanti nella parte inferiore della finestra di dialogo che presenterebbe confusione visiva con i pulsanti di controllo.
Configurazioni accettabili per i pulsanti di controllo nelle finestre di dialogo di Visual Studio
La finestra di dialogo deve includere un pulsante di controllo predefinito. Per determinare il comando migliore da usare come predefinito, scegliere tra le opzioni seguenti (elencate in ordine di precedenza):
Scegliere il comando più sicuro e più sicuro come predefinito. Ciò significa scegliere il comando più probabile per evitare la perdita di dati ed evitare l'accesso imprevisto al sistema.
Se la perdita e la sicurezza dei dati non sono fattori, scegliere il comando predefinito in base alla praticità. L'inclusione del comando più probabile come impostazione predefinita migliorerà il flusso di lavoro dell'utente quando il dialogo supporta attività frequenti o ripetitive.
Evitare di scegliere un'azione distruttiva permanente per il comando predefinito. Se tale comando è presente, scegliere un comando più sicuro come predefinito.
Access keys
Non usare i tasti di scelta per i pulsanti OK, Annulla o Guida . Questi pulsanti vengono mappati ai tasti di scelta rapida per impostazione predefinita:
Nome del pulsante | Tasto di scelta rapida |
---|---|
Ok | INVIO |
Annullamento | ESC |
Icona ? | F1 |
Immagini
Usare le immagini con moderazione nei dialoghi. Non usare icone di grandi dimensioni nelle finestre di dialogo solo per usare spazio. Usare le immagini solo se sono una parte importante della comunicazione del messaggio all'utente, ad esempio icone di avviso o animazioni di stato.
Assegnazione di priorità e livelli
Assegnazione delle priorità all'interfaccia utente
Potrebbe essere necessario inserire alcuni elementi dell'interfaccia utente in primo piano e posizionare in finestre di dialogo opzioni e comportamenti più avanzati (inclusi i comandi oscuri). È possibile usare in primo piano le funzionalità di uso comune, rendendola visibile per impostazione predefinita nell'interfaccia utente con un'etichetta di testo quando viene visualizzata la finestra di dialogo.
Livelli dell'interfaccia utente
Se si è determinato che è necessaria una finestra di dialogo, ma la funzionalità correlata che si vuole presentare all'utente va oltre ciò che può essere visualizzato in una finestra di dialogo semplice, è necessario layerare l'interfaccia utente. I metodi di sovrapposizione più comuni usati da Visual Studio sono schede e corridoi o dashboard. In alcuni casi, le aree che possono espandersi e comprimere potrebbero essere appropriate. L'interfaccia utente adattiva non è in genere consigliata in Visual Studio.
Esistono vantaggi e svantaggi per diversi metodi di sovrapposizione dell'interfaccia utente tramite controlli simili a schede. Esaminare l'elenco seguente per assicurarsi di scegliere una tecnica di sovrapposizione appropriata per la situazione.
Tabulazione
Meccanismo di cambio | Vantaggi e uso appropriato | Svantaggi e uso inappropriato |
---|---|---|
Controllo schede | Raggruppare logicamente le pagine delle finestre di dialogo in set correlati Utile per meno di cinque (o il numero di schede che rientrano in una riga nella finestra di dialogo) pagine di controlli correlati nella finestra di dialogo Le etichette di tabulazioni devono essere brevi: una o due parole che possono identificare facilmente il contenuto Uno stile di dialogo di sistema comune Esempio: proprietà dell'elemento > Esplora file |
La creazione di etichette brevi descrittive può essere difficile In genere non viene ridimensionato oltre cinque schede in una finestra di dialogo Inappropriato se sono presenti troppe schede per una riga (usare una tecnica di sovrapposizione alternativa) Non estendibile |
Spostamento tramite barra laterale | Dispositivo di commutazione semplice che può contenere più categorie rispetto alle schede Elenco semplice di categorie (nessuna gerarchia) Estensibilità Esempio: Personalizza... > Aggiungi comando |
Non è un buon uso dello spazio orizzontale se sono presenti meno di tre gruppi L'attività potrebbe essere più adatta a un elenco a discesa |
Controllo Tree | Consente categorie illimitate Consente il raggruppamento e/o la gerarchia di categorie Estensibilità Esempio: Opzioni strumenti > |
Le gerarchie molto annidate possono causare uno scorrimento orizzontale eccessivo Visual Studio ha una sovrabbondanza delle visualizzazioni ad albero |
Procedura guidata | Consente di gestire il completamento delle attività guidando l'utente tramite passaggi sequenziali basati su attività: la procedura guidata rappresenta un'attività di alto livello e i singoli pannelli rappresentano le sottoattività necessarie per completare l'attività complessiva Utile quando l'attività supera i limiti dell'interfaccia utente, come quando l'utente dovrà altrimenti usare più editor e finestre degli strumenti per completare l'attività Utile quando l'attività richiede la diramazione Utile quando l'attività contiene dipendenze tra i passaggi Utile quando diverse attività simili con un fork decisionale possono essere presentate in un unico dialogo per ridurre il numero di dialoghi simili diversi |
Non appropriato per qualsiasi attività che non richiede un flusso di lavoro sequenziale Gli utenti possono diventare sopraffatti e confusi da una procedura guidata con troppi passaggi Le procedure guidate hanno uno schermo intrinsecamente limitato immobiliare |
Corridoi o dashboard
Corridoi e dashboard sono dialoghi o pannelli che fungono da punti di lancio ad altri dialoghi e finestre. Il "corridoio" ben progettato presenta immediatamente solo le opzioni, i comandi e le impostazioni più comuni, consentendo all'utente di eseguire facilmente attività comuni. Come un corridoio reale fornisce porte per accedere alle camere dietro di loro, qui l'interfaccia utente meno comune viene raccolta in "stanze" separate (spesso altri dialoghi) di funzionalità correlate che possono essere accessibili dal corridoio principale.
In alternativa, un'interfaccia utente che offre tutte le funzionalità disponibili in una singola raccolta anziché eseguire il refactoring delle funzionalità meno comuni in posizioni separate è semplicemente un dashboard.
Concetto di corridoio per esporre un'interfaccia utente aggiuntiva in Outlook
Interfaccia utente adattiva
Mostrare o nascondere l'interfaccia utente in base all'utilizzo o all'esperienza auto-segnalata di un utente è un altro modo per presentare l'interfaccia utente necessaria nascondendo altre parti. Questa opzione non è consigliata in Visual Studio, perché gli algoritmi per decidere quando mostrare o nascondere l'interfaccia utente possono essere difficili e le regole saranno sempre errate per alcuni casi.
Progetti
Progetti nel Esplora soluzioni
La maggior parte dei progetti è classificata come basata su riferimento, basata su directory o mista. Tutti e tre i tipi di progetti sono supportati simultaneamente nella Esplora soluzioni. La radice dell'esperienza utente nell'uso dei progetti avviene all'interno di questa finestra. Anche se diversi nodi di progetto sono progetti di tipo riferimento, directory o in modalità mista, esiste un modello di interazione comune da applicare come punto di partenza prima di divergere in modelli utente specifici del progetto.
I progetti devono sempre:
Supportare la possibilità di aggiungere cartelle di progetto per organizzare il contenuto del progetto
Mantenere una consis modalità tenda l per la persistenza del progetto
I progetti devono anche mantenere modelli di interazione coerenti per:
Rimozione degli elementi del progetto
Salvataggio di documenti
Modifica delle proprietà del progetto
Modifica del progetto in una visualizzazione alternativa
Operazioni di trascinamento della selezione
Modello di interazione con trascinamento della selezione
I progetti si classificano in genere come basati su riferimento (in grado di rendere persistenti solo i riferimenti agli elementi del progetto nell'archiviazione), basati su directory (in grado di rendere persistenti solo gli elementi del progetto archiviati fisicamente all'interno della gerarchia di un progetto) o misti (in grado di salvare in modo permanente riferimenti o elementi fisici). L'IDE supporta tutti e tre i tipi di progetti contemporaneamente all'interno del Esplora soluzioni.
Dal punto di vista del trascinamento della selezione, le caratteristiche seguenti devono essere applicate a ogni tipo di progetto all'interno del Esplora soluzioni:
Progetto basato su riferimenti: il punto chiave è che il progetto sta trascinando un riferimento a un elemento nello spazio di archiviazione. Quando un progetto basato su riferimento funge da origine per un'operazione di spostamento, deve rimuovere solo il riferimento all'elemento dal progetto. L'elemento non deve essere effettivamente eliminato dal disco rigido. Quando un progetto basato su riferimento funge da destinazione per un'operazione di spostamento (o copia), deve aggiungere un riferimento all'elemento di origine originale senza creare una copia privata dell'elemento.
Progetto basato su directory: da un punto di trascinamento della selezione, il progetto trascina l'elemento fisico anziché un riferimento. Quando un progetto basato su directory funge da origine per un'operazione di spostamento, deve eliminare l'elemento fisico dal disco rigido e rimuoverlo dal progetto. Quando un progetto basato su directory funge da destinazione per un'operazione di spostamento (o copia), deve creare una copia dell'elemento di origine nella posizione di destinazione.
Progetto di destinazione mista: da un punto di trascinamento della selezione, il comportamento di questo tipo di progetto si basa sulla natura dell'elemento trascinato (un riferimento a un elemento nell'archivio o all'elemento stesso). Il comportamento corretto per i riferimenti e gli elementi fisici è descritto in precedenza.
Se nella Esplora soluzioni fosse presente un solo tipo di progetto, le operazioni di trascinamento della selezione sarebbero semplici. Poiché ogni sistema di progetto ha la possibilità di definire il proprio comportamento di trascinamento della selezione, è necessario seguire alcune linee guida (in base al comportamento di trascinamento della selezione di Esplora risorse) per garantire un'esperienza utente prevedibile:
Un'operazione di trascinamento non modificata nella Esplora soluzioni (quando non si tiene premuto CTRL o MAIUSC) dovrebbe comportare un'operazione di spostamento.
L'operazione di trascinamento dello spostamento dovrebbe comportare anche un'operazione di spostamento.
L'operazione di trascinamento ctrl dovrebbe comportare un'operazione di copia.
I sistemi di progetto basati su riferimenti e misti supportano la nozione di aggiunta di un collegamento (o riferimento) all'elemento di origine. Quando questi progetti sono la destinazione di un'operazione di trascinamento della selezione (quando si tiene premuto CTRL+MAIUSC ), il risultato dovrebbe essere un riferimento all'elemento aggiunto al progetto
Non tutte le operazioni di trascinamento della selezione sono sensibili tra combinazioni di progetti basati su riferimenti, basati su directory e misti. In particolare, è problematico fingere di consentire un'operazione di spostamento tra un progetto di origine basato su directory e un progetto di destinazione basato su riferimenti perché il progetto basato sulla directory di origine dovrà eliminare l'elemento di origine al termine dello spostamento. Il progetto basato sul riferimento di destinazione finirà quindi con un riferimento a un elemento eliminato.
È anche fuorviante fingere di consentire un'operazione di copia tra questi tipi di progetti perché il progetto basato sul riferimento di destinazione non deve creare una copia indipendente dell'elemento di origine. Analogamente, il trascinamento di CTRL+MAIUSC in un progetto di destinazione basato su directory non deve essere consentito perché un progetto basato su directory non è in grado di rendere persistenti i riferimenti. Nei casi in cui l'operazione di trascinamento della selezione non è supportata, l'IDE deve impedire la selezione e mostrare all'utente il cursore senza rilascio (illustrato nella tabella dei puntatori riportata di seguito).
Per implementare correttamente il comportamento di trascinamento della selezione, il progetto di origine del trascinamento deve comunicare la sua natura al progetto di destinazione. Ad esempio, si tratta di riferimenti o basati su directory? Queste informazioni sono indicate dal formato degli Appunti offerto dall'origine. Come origine di un'operazione di trascinamento (o copia appunti) un progetto deve offrire CF_VSREFPROJECTITEMS
o CF_VSSTGPROJECTITEMS
rispettivamente, a seconda che il progetto sia basato su riferimenti o su directory. Entrambi questi formati hanno lo stesso contenuto di dati, simile al formato di WindowsCF_HDROP
, ad eccezione del fatto che gli elenchi di stringhe, invece di essere nomi file, sono un elenco di Projref
stringhe con terminazione doppiaNULL
(come restituito da IVsSolution::GetProjrefOfItem
o ::GetProjrefOfProject
come appropriato).
Come destinazione di un'operazione di rilascio (o incolla negli Appunti), un progetto deve accettare sia CF_VSREFPROJECTITEMS
e CF_VSSTGPROJECTITEMS
, anche se la gestione esatta dell'operazione di trascinamento della selezione varia a seconda della natura del progetto di destinazione e del progetto di origine. Il progetto di origine dichiara la sua natura indipendentemente dal fatto che offra CF_VSREFPROJECTITEMS
o CF_VSSTGPROJECTITEMS
. La destinazione del rilascio comprende la propria natura e quindi dispone di informazioni sufficienti per prendere decisioni su se eseguire uno spostamento, una copia o un collegamento. L'utente modifica anche l'operazione di trascinamento della selezione premendo CTRL, MAIUSC o CTRL e MAIUSC. È importante che la destinazione di rilascio indichi correttamente quale operazione verrà eseguita in anticipo nei relativi DragEnter
metodi e DragOver
. Il Esplora soluzioni sa automaticamente se il progetto di origine e il progetto di destinazione sono lo stesso progetto.
Il trascinamento di elementi del progetto tra istanze di Visual Studio (ad esempio, da un'istanza di devenv.exe a un altro) non è supportato in modo specifico. Anche il Esplora soluzioni disabilita direttamente questa opzione.
L'utente deve sempre essere in grado di determinare l'effetto di un'operazione di trascinamento della selezione di un elemento, trascinandolo nella posizione di destinazione e osservando quale dei seguenti puntatori del mouse viene visualizzato prima dell'eliminazione dell'elemento:
Mouse pointer | Comando | Descrizione |
---|---|---|
Nessun rilascio | Impossibile eliminare l'elemento nella posizione specificata. | |
Copia | L'elemento verrà copiato nella posizione di destinazione. | |
Sposta | L'elemento verrà spostato nella posizione di destinazione. | |
Aggiungi riferimento | Verrà aggiunto un riferimento all'elemento selezionato alla posizione di destinazione. |
Progetti basati su riferimenti
La tabella seguente riepiloga le operazioni di trascinamento della selezione (nonché le operazioni taglia/copia/incolla) che devono essere eseguite in base alla natura dell'elemento di origine e dei tasti di modifica premuti per i progetti di destinazione basati su riferimenti:
Modificatore | Category | Elemento di origine: Riferimento/Collegamento | Elemento di origine: elemento fisico o file system (CF_HDROP ) |
---|---|---|---|
Nessun modificatore | Azione | Sposta | Collega |
Nessun modificatore | Destinazione | Aggiunge un riferimento all'elemento originale | Aggiunge un riferimento all'elemento originale |
Nessun modificatore | Origine | Elimina il riferimento all'elemento originale | Mantiene l'elemento originale |
Nessun modificatore | Risultato | DROPEFFECT_MOVE viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
DROPEFFECT_LINK viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
MAIUSC+Trascinamento | Azione | Sposta | Nessun rilascio |
MAIUSC+Trascinamento | Destinazione | Aggiunge un riferimento all'elemento originale | Nessun rilascio |
MAIUSC+Trascinamento | Origine | Elimina il riferimento all'elemento originale | Nessun rilascio |
MAIUSC+Trascinamento | Risultato | DROPEFFECT_MOVE viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
Nessun rilascio |
CTRL+Trascinamento | Azione | Copia | Nessun rilascio |
CTRL+Trascinamento | Destinazione | Aggiunge un riferimento all'elemento originale | Nessun rilascio |
CTRL+Trascinamento | Origine | Mantiene il riferimento all'elemento originale | Nessun rilascio |
CTRL+Trascinamento | Risultato | DROPEFFECT_COPY viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
Nessun rilascio |
CTRL+MAIUSC+Trascinamento | Azione | Collega | Collega |
CTRL+MAIUSC+Trascinamento | Destinazione | Aggiunge un riferimento all'elemento originale | Aggiunge un riferimento all'elemento originale |
CTRL+MAIUSC+Trascinamento | Origine | Mantiene il riferimento all'elemento originale | Mantiene l'elemento originale |
CTRL+MAIUSC+Trascinamento | Risultato | DROPEFFECT_LINK viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
DROPEFFECT_LINK viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
CTRL+MAIUSC+Trascinamento | Nota | Uguale al comportamento di trascinamento della selezione per i collegamenti in Esplora risorse. | |
Taglia/Incolla | Azione | Sposta | Collega |
Taglia/Incolla | Destinazione | Aggiunge un riferimento all'elemento originale | Aggiunge un riferimento all'elemento originale |
Taglia/Incolla | Origine | Mantiene il riferimento all'elemento originale | Mantiene l'elemento originale |
Taglia/Incolla | Risultato | L'elemento rimane nella posizione originale nella risorsa di archiviazione | L'elemento rimane nella posizione originale nella risorsa di archiviazione |
Copia/Incolla | Azione | Copia | Collega |
Copia/Incolla | Origine | Aggiunge un riferimento all'elemento originale | Aggiunge un riferimento all'elemento originale |
Copia/Incolla | Risultato | Mantiene il riferimento all'elemento originale | Mantiene l'elemento originale |
Copia/Incolla | Azione | L'elemento rimane nella posizione originale nella risorsa di archiviazione | L'elemento rimane nella posizione originale nella risorsa di archiviazione |
Progetti basati su directory
La tabella seguente riepiloga le operazioni di trascinamento della selezione (nonché le operazioni taglia/copia/incolla) che devono essere eseguite in base alla natura dell'elemento di origine e dei tasti di modifica premuti per i progetti di destinazione basati su directory:
Modificatore | Category | Elemento di origine: Riferimento/Collegamento | Elemento di origine: elemento fisico o file system (CF_HDROP ) |
---|---|---|---|
Nessun modificatore | Azione | Sposta | Sposta |
Nessun modificatore | Destinazione | Copia l'elemento nel percorso di destinazione | Copia l'elemento nel percorso di destinazione |
Nessun modificatore | Origine | Elimina il riferimento all'elemento originale | Elimina il riferimento all'elemento originale |
MAIUSC+Trascinamento | Azione | Sposta | Sposta |
MAIUSC+Trascinamento | Destinazione | Copia l'elemento nel percorso di destinazione | Copia l'elemento nel percorso di destinazione |
MAIUSC+Trascinamento | Origine | Elimina il riferimento all'elemento originale | Elimina l'elemento dal percorso originale |
MAIUSC+Trascinamento | Risultato | DROPEFFECT_MOVE viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
DROPEFFECT_MOVE viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
CTRL+Trascinamento | Azione | Copia | Copia |
CTRL+Trascinamento | Destinazione | Copia l'elemento nel percorso di destinazione | Copia l'elemento nel percorso di destinazione |
CTRL+Trascinamento | Origine | Mantiene il riferimento all'elemento originale | Mantiene il riferimento all'elemento originale |
CTRL+Trascinamento | Risultato | DROPEFFECT_COPY viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
DROPEFFECT_COPY viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
CTRL+MAIUSC+Trascinamento | Nessun rilascio | Nessun rilascio | |
Taglia/Incolla | Azione | Sposta | Sposta |
Taglia/Incolla | Destinazione | Copia l'elemento nel percorso di destinazione | Copia l'elemento nel percorso di destinazione |
Taglia/Incolla | Origine | Elimina il riferimento all'elemento originale | Elimina l'elemento dal percorso originale |
Taglia/Incolla | Risultato | L'elemento rimane nella posizione originale nella risorsa di archiviazione | L'elemento viene eliminato dal percorso originale nella risorsa di archiviazione |
Copia/Incolla | Azione | Copia | Copia |
Copia/Incolla | Destinazione | Aggiunge un riferimento all'elemento originale | Copia l'elemento nel percorso di destinazione |
Copia/Incolla | Origine | Mantiene l'elemento originale | Mantiene l'elemento originale |
Copia/Incolla | Risultato | L'elemento rimane nella posizione originale nella risorsa di archiviazione | L'elemento rimane nella posizione originale nella risorsa di archiviazione |
Progetti di destinazione mista
La tabella seguente riepiloga le operazioni di trascinamento della selezione (nonché le operazioni taglia/copia/incolla) che devono essere eseguite in base alla natura dell'elemento di origine e dei tasti di modifica premuti per i progetti di destinazione mista:
Modificatore | Category | Elemento di origine: Riferimento/Collegamento | Elemento di origine: elemento fisico o file system (CF_HDROP ) |
---|---|---|---|
Nessun modificatore | Azione | Sposta | Sposta |
Nessun modificatore | Destinazione | Aggiunge un riferimento all'elemento originale | Copia l'elemento nel percorso di destinazione |
Nessun modificatore | Origine | Elimina il riferimento all'elemento originale | Elimina il riferimento all'elemento originale |
Nessun modificatore | Risultato | DROPEFFECT_ MOVE viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
DROPEFFECT_ MOVE viene restituito come azione da ::Drop e l'elemento viene eliminato dal percorso originale nella risorsa di archiviazione |
MAIUSC+Trascinamento | Azione | Sposta | Sposta |
MAIUSC+Trascinamento | Destinazione | Aggiunge un riferimento all'elemento originale | Copia l'elemento nel percorso di destinazione |
MAIUSC+Trascinamento | Origine | Elimina il riferimento all'elemento originale | Elimina l'elemento dal percorso originale |
MAIUSC+Trascinamento | Risultato | DROPEFFECT_ MOVE viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
DROPEFFECT_ MOVE viene restituito come azione da ::Drop e l'elemento viene eliminato dal percorso originale nella risorsa di archiviazione |
CTRL+Trascinamento | Azione | Copia | Copia |
CTRL+Trascinamento | Destinazione | Aggiunge un riferimento all'elemento originale | Copia l'elemento nel percorso di destinazione |
CTRL+Trascinamento | Origine | Mantiene il riferimento all'elemento originale | Mantiene l'elemento originale |
CTRL+Trascinamento | Risultato | DROPEFFECT_ COPY viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
DROPEFFECT_ COPY viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
CTRL+MAIUSC+Trascinamento | Azione | Collega | Collega |
CTRL+MAIUSC+Trascinamento | Destinazione | Aggiunge un riferimento all'elemento originale | Aggiunge un riferimento all'elemento di origine originale |
CTRL+MAIUSC+Trascinamento | Origine | Mantiene il riferimento all'elemento originale | Mantiene l'elemento originale |
CTRL+MAIUSC+Trascinamento | Risultato | DROPEFFECT_ LINK viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
DROPEFFECT_ LINK viene restituito come azione da ::Drop e l'elemento rimane nella posizione originale nello spazio di archiviazione |
Taglia/Incolla | Azione | Sposta | Sposta |
Taglia/Incolla | Destinazione | Copia l'elemento nel percorso di destinazione | Copia l'elemento nel percorso di destinazione |
Taglia/Incolla | Origine | Elimina il riferimento all'elemento originale | Elimina l'elemento dal percorso originale |
Taglia/Incolla | Risultato | L'elemento rimane nella posizione originale nella risorsa di archiviazione | L'elemento viene eliminato dal percorso originale nella risorsa di archiviazione |
Copia/Incolla | Azione | Copia | Copia |
Copia/Incolla | Destinazione | Aggiunge un riferimento all'elemento originale | Copia l'elemento nel percorso di destinazione |
Copia/Incolla | Origine | Mantiene l'elemento originale | Mantiene l'elemento originale |
Copia/Incolla | Risultato | L'elemento rimane nella posizione originale nella risorsa di archiviazione | L'elemento rimane nella posizione originale nella risorsa di archiviazione |
Questi dettagli devono essere presi in considerazione quando si implementa il trascinamento nel Esplora soluzioni:
Progettare per più scenari di selezione.
I nomi di file (percorso completo) devono essere univoci nel progetto di destinazione o non devono essere consentiti.
I nomi delle cartelle devono essere univoci (senza distinzione tra maiuscole e minuscole) a livello di eliminazione.
Esistono differenze di comportamento tra i file aperti o chiusi al momento del trascinamento (non menzionati negli scenari precedenti).
I file di primo livello si comportano in modo leggermente diverso rispetto ai file nelle cartelle.
Un altro problema da tenere presente è come gestire le operazioni di spostamento su elementi con finestre di progettazione o editor aperti. Il comportamento previsto è il seguente (questo vale per tutti i tipi di progetto):
Se l'editor o la finestra di progettazione aperta non include modifiche non salvate, la finestra dell'editor o della finestra di progettazione deve essere chiusa automaticamente.
Se l'editor o la finestra di progettazione aperta non ha modifiche non salvate, l'origine del trascinamento deve attendere che si verifichi il rilascio e quindi chiedere all'utente di salvare le modifiche di cui non è stato eseguito il commit nei documenti aperti prima di chiudere la finestra con un prompt simile al seguente:
========================================================== One or more open documents have unsaved changes. Do you want to save uncommitted changes before proceeding? [Yes] [No] [Cancel] ==========================================================
In questo modo l'utente ha la possibilità di salvare il lavoro in corso prima che la destinazione effettui le copie. È stato aggiunto un nuovo metodo IVsHierarchyDropDataSource2::OnBeforeDropNotify
per abilitare questa gestione.
La destinazione copierà quindi lo stato dell'elemento così com'è nello spazio di archiviazione ,senza includere le modifiche non salvate nell'editor se l'utente ha scelto No. Dopo che la destinazione ha completato la copia (in IVsHierarchyDropDataSource::Drop
), l'origine ha la possibilità di completare la parte di eliminazione dell'operazione di spostamento (in IVsHierarchyDropDataSource::OnDropNotify
).
Tutti gli editor con modifiche non salvate devono essere lasciati aperti. Per tali documenti con modifiche non salvate, ciò significa che verrà eseguita la parte di copia dell'operazione di spostamento, ma la parte di eliminazione verrà interrotta. In uno scenario di selezione multipla quando l'utente sceglie No, tali documenti con modifiche non salvate non devono essere chiusi o rimossi, ma quelli senza modifiche non salvate devono essere chiusi e rimossi.