Share via


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.

Tool window states in Visual Studio
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:

Tool window enabling 'New Window' command when an instance of the window is active
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:

Window management commands in the Visual Studio Window menu
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.

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:

  1. Integrare le funzionalità in una delle finestre di dialogo condivise in Visual Studio.

  2. Creare un dialogo personalizzato usando un modello trovato in un dialogo simile esistente.

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

>Create Strong Name Key is an example of a simple dialog in Visual Studio.
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:

Tools > Options is an example of a layered dialog in Visual Studio.
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:

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

  2. 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à.

    Guideline specifications for title bars in Visual Studio dialogs
    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.

Acceptable configurations for control buttons in Visual Studio dialogs
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.

Hallway concept for exposing additional UI in Outlook
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
Mouse Nessun rilascio Impossibile eliminare l'elemento nella posizione specificata.
Mouse Copia L'elemento verrà copiato nella posizione di destinazione.
Mouse Sposta L'elemento verrà spostato nella posizione di destinazione.
Mouse 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):

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

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