Condividi tramite


Comandi della finestra di progettazione e modello a oggetti DesignerAction per Windows Form

I comandi della finestra di progettazione e il modello a oggetti DesignerAction contentono di specificare un insieme di azioni relative a un componente in fase di progettazione. Per accedervi dall'area di progettazione, gli utenti in genere fanno clic sul glifo dello smart tag di un componente (Glifo Smart Tag) e selezionano una delle azioni offerte dal pannello smart tag. Tale modello unifica i vari sistemi attraverso i quali è possibile offrire agli utenti i comandi.

Smart tag

La funzionalità smart tag consente a componenti e controlli di rendere disponibili agli utenti comandi e informazioni sensibili al contesto. Lo smart tag può essere considerato un'alternativa ai verbi di progettazione, poiché è possibile scegliere di visualizzarlo nel pannello smart tag oltre che nel menu di scelta rapida associato a un componente o un controllo.

Per un esempio completo delle modalità di implementazione degli smart tag, vedere Procedura: collegare smart tag a un componente Windows Form.

Classi dei comandi della finestra di progettazione

Nella tabella riportata di seguito viene illustrato in che modo i comandi della finestra di progettazione vengono esposti durante lo sviluppo di componenti e controlli.

Classe

Descrizione

MenuCommand

Delegato associato a un ID di comando. Non definisce il testo del comando, la relativa posizione né altri metadati.

DesignerVerb

Comando di menu che ne definisce anche il testo e altri metadati. I verbi in genere vengono forniti in base alle finestre di progettazione e sono specifici di ogni finestra. I verbi di progettazione vengono solitamente visualizzati in un menu di scelta rapida o nel menu Visualizza della barra dei menu principale.

DesignerActionItem

Comando di menu che definisce testo e altri metadati per la descrizione di un'azione di destinazione che è possibile eseguire. Mediante le azioni l'utente viene in genere guidato in un processo a più fasi, ad esempio la configurazione di un'origine dati per un componente.

Modelli push e pull

Nella tabella riportata di seguito sono illustrati i due modelli per accedere a livello di codice ai comandi della finestra di progettazione.

Modello

Descrizione

Push

In una finestra di progettazione viene richiesto un servizio in particolare a cui vengono aggiunti comandi.

Pull

In una finestra di progettazione un servizio richiede informazioni in merito a un comando offerto dalla finestra stessa.

Unificazione di comandi esistenti

I tipi di comandi elencati nella tabella precedente delle classi dei comandi della finestra di progettazione hanno molti elementi in comune. L'API di DesignerAction li include tutti per offrire un modello uniforme destinato all'esposizione dei comandi agli utenti di una finestra di progettazione.

Nota

Non tutte le finestre di progettazione supportano tutti i modelli. In una finestra di progettazione è possibile richiedere informazioni sui tipi di supporto offerti e in risposta è possibile che vengano modificate le modalità di offerta dei comandi. È inoltre possibile che entrambi i modelli, push e pull, non siano supportati per tutti i tipi di comandi. Le azioni di progettazione non vengono esposte come smart tag in tutte le finestre di progettazione. Nel caso di alcune finestre, ad esempio, è possibile che le azioni di progettazione vengano esposte in una finestra degli strumenti.

Modello a oggetti DesignerAction

Nella tabella riportata di seguito vengono descritte le classi importanti che implementano il modello a oggetti DesignerAction.

Classe

Descrizione

DesignerActionItem

Rappresenta un elemento pannello su un pannello smart tag.

DesignerActionList

Definisce un elenco di elementi utilizzati per creare un pannello smart tag.

DesignerActionService

Crea un servizio in fase di progettazione per la gestione dell'insieme di oggetti DesignerActionItem per i componenti.

DesignerActionTextItem

Rappresenta un elemento di testo statico su un pannello. Deriva da DesignerActionItem.

DesignerActionPropertyItem

Rappresenta un elemento pannello associato a una proprietà in una classe derivata da DesignerActionList. Deriva da DesignerActionItem.

DesignerActionMethodItem

Rappresenta un elemento pannello associato a un metodo in una classe derivata da DesignerActionList. Deriva da DesignerActionItem.

DesignerActionHeaderItem

Rappresenta un elemento intestazione statico su un pannello smart tag. Deriva da DesignerActionTextItem.

Utilizzo del modello a oggetti DesignerAction

Per attivare le azioni di progettazione relative al componente o al controllo in uso, derivare dalla classe base DesignerActionList. Tale classe derivata consente di inserire un pannello smart tag, che rappresenta l'elemento di interfaccia utente simile al menu.

È possibile che la classe derivata esegua l'override del metodo virtual GetSortedActionItems per restituire un insieme di oggetti derivati da DesignerActionItem. Tali oggetti rappresentano gli elementi pannello, ognuno dei quali viene visualizzato nel pannello in base al rispettivo tipo. Ad esempio, un oggetto DesignerActionTextItem viene visualizzato come etichetta di testo statica. Per gli elementi di pannello attivi, rappresentati dai tipi DesignerActionPropertyItem e DesignerActionMethodItem, è disponibile rispettivamente una proprietà o un metodo accessibile pubblicamente che implementa la funzionalità relativa all'elemento.

Dopo aver creato la classe derivata, è possibile aggiungerla a un controllo in due modi:

  • Il modello pull consente di aggiungere un'istanza della classe derivata alla proprietà ActionLists sulla classe ComponentDesigner. In tal modo le classi che ereditano possono fornire altri elenchi di azioni e i relativi elementi possono essere uniti.

  • Il modello push consente di chiamare Add per aggiungere un'istanza della classe derivata all'insieme gestito dalla classe DesignerActionService globale. Tali elenchi di azioni verranno uniti a quelli presenti nell'insieme gestito da ComponentDesigner.

Una classe DesignerActionPropertyItem è rappresentata nella finestra di progettazione dalla relativa classe UITypeEditor corrispondente. Una classe DesignerActionMethodItem è rappresentata nella finestra di progettazione da un elemento attivo dell'interfaccia utente, ad esempio un collegamento ipertestuale, che richiama un metodo fornito dal programmatore. L'implementazione dell'elenco di azioni del metodo GetSortedActionItems restituisce le proprietà e i metodi nell'ordine in cui dovrebbero essere visualizzati nel pannello smart tag.

Per un esempio completo dell'implementazione degli smart tag, vedere l'argomento Procedura: collegare smart tag a un componente Windows Form.

Verbi esistenti in elenchi di azioni

I controlli e i componenti con le implementazioni di DesignerVerb esistenti ricevono automaticamente il supporto della classe DesignerActionList. L'ambiente di progettazione richiede un elenco di azioni alla finestra di progettazione di un componente. Se non ne è disponibile alcuno, viene creato un elenco relativo ai verbi esistenti.

Elementi dell'elenco di azioni nel menu di scelta rapida

Se si desidera che un elemento venga visualizzato sia nel menu di scelta rapida che in un elenco di azioni, è possibile specificare il flag IncludeAsDesignerVerb su DesignerActionMethodItem.

Quando viene chiamato l'oggetto Add, l'elenco di azioni viene esaminato alla ricerca di eventuali classi DesignerActionMethodItem per le quali sia impostato il flag IncludeAsDesignerVerb. Se tale flag è impostato, viene richiamato il metodo AddVerb relativo all'elemento per aggiungerlo ai verbi del componente e quindi al rispettivo menu di scelta rapida.

Modifiche ai tipi di comandi di progettazione

Le classi MenuCommand e DesignerVerb di .NET Framework versione 1.1 sono state leggermente modificate per supportare il modello a oggetti DesignerAction. Entrambi i tipi espongono ora una nuova proprietà denominata Properties, ovvero un'interfaccia IDictionary in cui vengono archiviate tutte le proprietà pubbliche relative all'oggetto comando. La chiave del dizionario è il nome della proprietà pubblica che consente l'enumerazione generica delle proprietà e fornisce una base uniforme da cui è possibile aggiungere nuove proprietà senza modificare la definizione della classe.

La classe MenuCommandService, inoltre, fornisce un'implementazione standard dell'interfaccia IMenuCommandService ed esegue la corretta integrazione dei verbi. Questa classe genera eventi che notificano le operazioni di aggiunta e di rimozione effettuate sui comandi e consente di creare un'interfaccia utente basata sui risultati di questi eventi. MenuCommandService e IMenuCommandService sono disponibili nel contenitore dei servizi.

Vedere anche

Attività

Procedura: collegare smart tag a un componente Windows Form

Riferimenti

DesignerActionList

ComponentDesigner

DesignerVerb

MenuCommand

MenuCommandService

Altre risorse

Estensione del supporto in fase di progettazione