Condividi tramite


Architettura della fase di progettazione

Nell'illustrazione che segue è fornita una panoramica sull'architettura della fase di progettazione di .NET Framework.

Architettura della fase di progettazione

In .NET Framework vengono fornite interfacce e classi per la personalizzazione del comportamento dei componenti e delle interfacce utente in un ambiente di progettazione. Un ambiente di progettazione normalmente include una finestra di progettazione per la disposizione dei componenti e un visualizzatore proprietà per la configurazione dei valori delle proprietà di un componente. Un ambiente di progettazione fornisce inoltre servizi per la fase di progettazione che possono essere utilizzati da meccanismi propri della fase di progettazione.

In .NET Framework vengono definite interfacce utilizzabili dagli sviluppatori per l'implementazione del supporto personalizzato per la fase di progettazione. I meccanismi principali per l'estensione del supporto in fase di progettazione rientra nelle seguenti categorie: finestre di progettazione, convertitori di tipi ed editor di tipi con interfaccia utente. Per ottenere l'associazione di tipi e membri di tipo ai provider di supporto per la fase di progettazione, vengono applicati degli attributi.

Attributi

Mediante gli attributi, i tipi e i membri di tipo vengono associati a una classe che estende il comportamento della fase di progettazione. Una classe DesignerAttribute consente di associare un tipo a una finestra di progettazione. Una classe TypeConverterAttribute consente di associare un tipo o membro di tipo a un convertitore di tipi. Una classe EditorAttribute consente di associare un tipo o un membro di tipo a un editor di tipi con interfaccia utente. Per ulteriori informazioni sugli attributi in .NET Framework, vedere Attributi per componenti in fase di progettazione e Attributi e supporto in fase di progettazione.

Finestre di progettazione

Una finestra di progettazione consente di personalizzare il comportamento di un componente in fase di progettazione, compreso l'aspetto, l'inizializzazione e l'interazione con l'utente. Mediante una finestra di progettazione è possibile aggiungere, rimuovere o sostituire le proprietà di un componente selezionato elencate in un visualizzatore proprietà. In una finestra di progettazione sono disponibili metodi definiti dall'utente che possono essere collegati a eventi di componenti specifici o eseguiti da un comando di menu personalizzato o DesignerVerb. Una finestra di progettazione consente inoltre di utilizzare i servizi forniti da un ambiente di progettazione. Per ulteriori informazioni sulle finestre di progettazione, vedere Finestre di progettazione personalizzate.

Convertitori di tipi

Un convertitore di tipi può essere implementato per la traduzione di valori tra il tipo per il quale è stato compilato e altri tipi di dati, dai quali o verso i quali è in grado di tradurre valori. Un convertitore di tipi è inoltre in grado di fornire la logica necessaria per abilitare la configurazione di una proprietà all'interno di un visualizzatore proprietà in fase di progettazione. Un convertitore di tipi può fornire, in un visualizzatore proprietà, un elenco di valori standard per una proprietà del tipo che supporta in fase di progettazione. Un convertitore di tipi è inoltre in grado di produrre il codice di inizializzazione per inizializzare una proprietà in fase di progettazione. Per informazioni sull'implementazione di un convertitore di tipi, vedere Procedura: implementare un convertitore di tipi.

Editor di tipi con interfaccia utente

Un editor di tipi con interfaccia utente è in grado di fornire un'interfaccia utente per modificare il valore di una proprietà e per visualizzare la rappresentazione del valore della proprietà in fase di progettazione. Un editor di tipi con interfaccia utente è specifico dei tipi e fornisce un'interfaccia utente per configurare le proprietà del tipo per il quale è stato compilato o di tipi derivati che non possiedano attributi di override, in fase di progettazione. Un editor di tipi con interfaccia utente è in grado di fornire un Windows Form, o interfaccia di configurazione a discesa, per la configurazione di una proprietà. Per ulteriori informazioni sull'implementazione di un editor di tipi con interfaccia utente, vedere Procedura: implementare un editor di tipi con interfaccia utente.

Nota

I convertitori di tipi e gli editor di tipi con interfaccia utente vengono utilizzati sia in fase di progettazione che in fase di esecuzione, mentre le finestre di progettazione sono utilizzate solo in fase di progettazione.

Tipi correlati alla progettazione

Nelle tabelle riportate di seguito sono visualizzati alcune classi importanti negli spazi dei nomi correlati alla progettazione.

System.Drawing.Design

Tipo

Descrizione

UITypeEditor

Fornisce una classe base che è possibile utilizzare per implementare gli editor del valore.

IToolboxService

Fornisce metodi e proprietà per gestire ed eseguire query nella Casella degli strumenti nell'ambiente di sviluppo.

ToolboxItem

Fornisce un'implementazione base di un elemento della casella degli strumenti.

System.ComponentModel.Design

Tipo

Descrizione

DesignerActionList

Fornisce la classe di base per i tipi che definiscono un elenco di elementi utilizzati per creare un pannello smart tag.

DesignSurface

Fornisce un'interfaccia utente per la progettazione dei componenti.

IDesigner

Fornisce il framework di base per la compilazione di una finestra di progettazione personalizzata.

IRootDesigner

Fornisce supporto per le tecnologie di visualizzazione della finestra di progettazione a livello radice.

IExtenderProviderService

Fornisce un'interfaccia per l'aggiunta e la rimozione dei provider di estensione in fase di progettazione.

UndoEngine

Specifica una funzionalità generica Annulla/Ripristina.

System.Windows.Forms.Design

Tipo

Descrizione

IWindowsFormsEditorService

Fornisce un'interfaccia che consente agli editor di tipi con interfaccia utente di visualizzare Windows Form oppure un controllo di un'area a discesa da un controllo PropertyGrid in modalità progettazione.

ControlDesigner

Classe base della finestra di progettazione per l'estensione del comportamento della modalità progettazione di una classe Control.

DocumentDesigner

Classe base della finestra di progettazione utilizzata per estendere il comportamento della modalità progettazione e per fornirne una visualizzazione a livello di elemento radice per una classe Control che supporta controlli annidati e riceve messaggi di scorrimento.

System.Windows.Forms.Design.Behavior

Tipo

Descrizione

BehaviorService

Gestisce l'interfaccia utente nella finestra di progettazione.

Behavior

Rappresenta gli oggetti Behavior gestiti da una classe BehaviorService.

Adorner

Gestisce un insieme di oggetti Glyph relativi all'interfaccia utente. La classe non può essere ereditata.

Glyph

Rappresenta un'unica entità interfaccia utente gestita da una classe Adorner.

Servizi per la fase di progettazione

In .NET Framework è fornito un insieme di servizi per la fase di progettazione in grado di estendere le funzionalità di una finestra di progettazione. Questi servizi possono essere ottenuti utilizzando il metodo GetService di un componente collocato in modalità progettazione. È possibile aggiungere tipi di servizio personalizzati ai quali è possibile accedere dall'interno di un progetto in modalità progettazione tramite il metodo AddService dell'interfaccia del servizio IDesignerHost.

L'interfaccia IComponentChangeService consente di ricevere notifiche in una finestra di progettazione quando vengono modificati, aggiunti o rimossi componenti dall'ambiente di progettazione.

L'interfaccia IDesignerEventService consente di ricevere notifiche in una finestra di progettazione quando si aggiungono o rimuovono finestre di progettazione dall'ambiente di progettazione, nonché di ricevere notifiche quando la selezione di componenti corrente viene modificata.

L'interfaccia IDesignerFilter consente a una finestra di progettazione di aggiungere e di filtrare l'insieme di proprietà visualizzato in un Visualizzatore proprietà per il relativo componente.

IDesignerHost è un'interfaccia per l'aggiunta e il recupero di servizi, per la gestione di eventi relativi allo stato delle finestre di progettazione, per il rilevamento dello stato di caricamento di una finestra di progettazione e per la gestione di componenti o transazioni delle finestre di progettazione. Per ottenere un miglioramento delle prestazioni, le transazioni delle finestre di progettazione attivano l'esecuzione di sequenze di azioni in una modalità che impedisce alla visualizzazione della fase di progettazione di aggiornarsi fino al loro completamento e forniscono un meccanismo per permettere l'annullamento delle azioni dei componenti di una transazione e per permettere il ripristino dello stato precedente.

L'interfaccia IDesignerOptionService consente a una finestra di progettazione di ottenere e impostare i valori delle proprietà elencate nella griglia delle proprietà della finestra di progettazione di Windows Form, accessibile dalla voce Opzioni del menu Strumenti nell'ambiente di Visual Studio. La classe DesignerOptionService estende la flessibilità per l'esecuzione di query sulle opzioni.

L'interfaccia IDictionaryService consente a una finestra di progettazione di utilizzare un insieme basato sulle chiavi per dati definiti dall'utente nonché coppie di chiavi a cui è possibile accedere mediante una chiave o un valore.

L'interfaccia IEventBindingService consente a una finestra di progettazione di esporre in un Visualizzatore proprietà gli eventi per un componente in fase di progettazione mentre il componente è selezionato.

L'interfaccia IExtenderListService consente a una finestra di progettazione di ottenere i provider di estensione attualmente disponibili nell'ambiente di progettazione. L'interfaccia IExtenderProviderService consente a una finestra di progettazione di aggiungere o rimuovere provider di estensione in fase di progettazione.

L'interfaccia IHelpService consente a una finestra di progettazione di creare e rimuovere servizi e attributi di contesto della Guida e di visualizzare gli argomenti della Guida tramite parola chiave o URL.

L'interfaccia IInheritanceService consente a una finestra di progettazione di eseguire la ricerca dei componenti di classi derivate e di identificare gli eventuali attributi di ereditarietà di ciascun componente trovato.

L'interfaccia IMenuCommandService consente a una finestra di progettazione di eseguire la ricerca di comandi di menu e di aggiungerli, rimuoverli o richiamarli nell'ambiente di progettazione.

L'interfaccia IReferenceService consente a una finestra di progettazione di ottenere il nome di un oggetto tramite un riferimento, un riferimento a un oggetto tramite un nome, un riferimento al componente padre di un componente specifico oppure riferimenti a oggetti di un tipo specificato nel progetto corrente in modalità progettazione.

L'interfaccia IResourceService consente a una finestra di progettazione di ottenere un lettore o un writer delle risorse per un oggetto CultureInfo specificato.

L'interfaccia IRootDesigner consente a una finestra di progettazione di sostituire la visualizzazione radice della finestra di progettazione con una visualizzazione di finestra di progettazione personalizzata. L'interfaccia IRootDesigner deve essere implementata dalla finestra di progettazione per un componente.

L'interfaccia ISelectionService consente a una finestra di progettazione di inviare un insieme di riferimenti ai componenti attualmente selezionati, di impostare la selezione di un componente o insieme di componenti e di determinare se uno dei componenti è selezionato.

L'interfaccia IServiceContainer consente a una finestra di progettazione di aggiungere o rimuovere servizi che possono essere utilizzati da altri componenti o finestre di progettazione.

L'interfaccia ITypeDescriptorFilterService consente a un componente o finestra di progettazione di filtrare attributi, eventi e proprietà esposti da qualsiasi componente in fase di progettazione. L'interfaccia ITypeDescriptorFilterService deve essere implementata da una classe che può essere aggiunta come servizio utilizzando il metodo AddService della proprietà Site di un componente collocato in modalità progettazione.

L'interfaccia ITypeResolutionService consente a una finestra di progettazione di aggiungere al progetto un riferimento a un assembly, di ottenere un tipo o un assembly in base al nome e di ottenere il percorso di un assembly specificato.

Le classi DesignerActionService e DesignerActionUIService implementano la funzionalità smart tag relativa alle finestre di progettazione personalizzate. Per ulteriori informazioni, vedere Comandi della finestra di progettazione e modello a oggetti DesignerAction per Windows Form.

La classe BehaviorService gestisce l'interfaccia utente in una finestra di progettazione e offre un sistema uniforme per modificare elementi dell'interfaccia utente quali eventi correlati al mouse, comandi di menu e operazioni di trascinamento selezioni OLE in fase di progettazione. Per ulteriori informazioni, vedere Cenni preliminari su BehaviorService.

La classe CodeDomComponentSerializationService serializza un insieme di componenti o di oggetti serializzabili in un archivio di serializzazione. Per ulteriori informazioni, vedere Cenni preliminari sulla serializzazione della finestra di progettazione.

Vedere anche

Attività

Procedura: implementare un convertitore di tipi

Procedura: implementare un editor di tipi con interfaccia utente

Procedura: accedere ai servizi per la fase di progettazione

Procedura: accedere al supporto in fase di progettazione in Windows Form

Concetti

Attributi e supporto in fase di progettazione

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

Cenni preliminari su BehaviorService

Cenni preliminari sulla serializzazione della finestra di progettazione

Altre risorse

Estensione del supporto in fase di progettazione

Finestre di progettazione personalizzate