Procedura dettagliata: creazione di un modello utilizzando i controlli del contenuto
In questa procedura dettagliata viene illustrato come creare una personalizzazione a livello di documento in cui vengono utilizzati i controlli del contenuto per creare un contenuto strutturato e riutilizzabile in un modello di Microsoft Office Word.
Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento per Word 2007 e Word 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.
Word consente di creare un insieme di parti di documento riutilizzabili, definite blocchi predefiniti. Questa procedura dettagliata descrive come creare due blocchi predefiniti, ognuno dei quali contiene una tabella. Ogni tabella presenta diversi controlli del contenuto che possono contenere vari tipi di contenuto, ad esempio testo normale o date. Una tabella contiene informazioni su un dipendente, mentre l'altra contiene i commenti di un cliente.
Dopo aver creato un documento a partire dal modello, è possibile aggiungere una delle due tabelle al documento. A tale scopo sono disponibili vari oggetti BuildingBlockGalleryContentControl che visualizzano i blocchi predefiniti del modello.
In questa procedura dettagliata vengono illustrate le attività seguenti:
Creazione di tabelle che contengono controlli del contenuto in un modello di Word in fase di progettazione.
Compilazione a livello di codice di un controllo del contenuto casella combinata e di un controllo del contenuto elenco a discesa.
Protezione di una tabella specificata affinché non sia modificabile da parte degli utenti.
Aggiunta di tabelle all'insieme di blocchi predefiniti di un modello.
Creazione di un controllo del contenuto che visualizza i blocchi predefiniti disponibili nel modello.
Nota
Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.
Prerequisiti
Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:
-
Una versione di Visual Studio 2010 che include gli strumenti per sviluppatori di Microsoft Office. Per ulteriori informazioni, vedere [Configurazione di un computer per sviluppare soluzioni Office](bb398242\(v=vs.100\).md).
- Microsoft Office Word 2007 o Word 2010.
Creazione di un nuovo progetto Modello di Word
Creare un modello di Word per consentire agli utenti di creare copie personali in modo semplice.
Per creare un nuovo progetto Modello di Word
Creare un progetto Modello di Word con nome MyBuildingBlockTemplate. Nella procedura guidata, creare un nuovo documento nella soluzione. Per ulteriori informazioni, vedere Procedura: creare progetti di Office in Visual Studio.
Il nuovo modello di Word verrà aperto nella finestra di progettazione di Visual Studio e il progetto ModelloBloccoPredefinito verrà aggiunto in Esplora soluzioni.
Creazione di una tabella contenente informazioni su un dipendente
Creare una tabella contenente quattro tipi diversi di controlli del contenuto in cui l'utente possa immettere le informazioni su un dipendente.
Per creare la tabella contenente informazioni su un dipendente
Nel modello di Word contenuto nella finestra di progettazione di Visual Studio, fare clic sulla scheda Inserisci della barra multifunzione.
Nel gruppo Tabelle, fare clic su Tabella e inserire una tabella con 2 colonne e 4 righe.
Digitare nella prima colonna un testo simile alla colonna seguente:
Nome dipendente
Data assunzione
Titolo
Foto
Nella seconda colonna della tabella, fare clic nella prima cella accanto a Nome dipendente.
Nella barra multifunzione, fare clic sulla scheda Sviluppatore.
Nota
Se la scheda Sviluppatore non è visibile, è necessario prima visualizzarla. Per ulteriori informazioni, vedere Procedura: visualizzare la scheda Sviluppo nella barra multifunzione.
Nel gruppo Controlli, fare clic sul pulsante Testo per aggiungere il controllo PlainTextContentControl alla prima cella.
Nella seconda colonna della tabella, fare clic nella seconda cella accanto a Data assunzione.
Nel gruppo Controlli, fare clic sul pulsante Selezione data per aggiungere il controllo DatePickerContentControl alla seconda cella.
Nella seconda colonna della tabella, fare clic nella terza cella accanto a Titolo.
Nel gruppo Controlli, fare clic sul pulsante Casella combinata per aggiungere il controllo ComboBoxContentControl alla terza cella.
Nella seconda colonna della tabella, fare clic nell'ultima cella accanto a Foto.
Nel gruppo Controlli, fare clic sul pulsante del controllo del contenuto Immagine per aggiungere il controllo PictureContentControl all'ultima cella.
Creazione di una tabella contenente i commenti di un cliente
Creare una tabella contenente tre tipi diversi di controlli del contenuto in cui l'utente possa immettere i commenti di un cliente.
Per creare la tabella contenente i commenti di un cliente
Nel modello di Word, fare clic sulla riga successiva alla tabella del dipendente appena aggiunta e premere INVIO per aggiungere un nuovo paragrafo.
Nella barra multifunzione, fare clic sulla scheda Inserisci.
Nel gruppo Tabelle, fare clic su Tabella e inserire una tabella con 2 colonne e 3 righe.
Digitare nella prima colonna un testo simile alla colonna seguente:
Nome cliente
Livello di soddisfazione
Commenti
Nella seconda colonna della tabella, fare clic nella prima cella accanto a Nome cliente.
Nella barra multifunzione, fare clic sulla scheda Sviluppatore.
Nel gruppo Controlli, fare clic sul pulsante Testo per aggiungere il controllo PlainTextContentControl alla prima cella.
Nella seconda colonna della tabella, fare clic nella seconda cella accanto a Livello di soddisfazione.
Nel gruppo Controlli, fare clic sul pulsante Elenco a discesa per aggiungere il controllo DropDownListContentControl alla seconda cella.
Nella seconda colonna della tabella, fare clic nell'ultima cella accanto a Commenti.
Nel gruppo Controlli fare clic sul pulsante Formato RTF per aggiungere un controllo RichTextContentControl all'ultima cella.
Compilazione a livello di codice della casella combinata e dell'elenco a discesa
È possibile inizializzare i controlli del contenuto in fase di progettazione tramite la finestra Proprietà di Visual Studio. Questi controlli possono inoltre essere inizializzati in fase di esecuzione, il che consente di impostarne dinamicamente lo stato iniziale. Per questa procedura dettagliata, compilare a livello di codice in fase di esecuzione le voci degli oggetti ComboBoxContentControl e DropDownListContentControl allo scopo di comprenderne il funzionamento.
Per modificare l'interfaccia utente dei controlli del contenuto a livello di codice
In Esplora soluzioni, fare clic con il pulsante destro del mouse su ThisDocument.cs o ThisDocument.vb e scegliere Visualizza codice.
Aggiungere il codice seguente alla classe ThisDocument. Questo codice dichiara diversi oggetti da utilizzare più avanti in questa procedura.
Private GroupControl1 As Microsoft.Office.Tools.Word.GroupContentControl Private BuildingBlockControl1 As Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl Private BuildingBlockControl2 As Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl
private Microsoft.Office.Tools.Word.GroupContentControl groupControl1; private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl1; private Microsoft.Office.Tools.Word.BuildingBlockGalleryContentControl buildingBlockControl2;
Aggiungere il codice seguente al metodo ThisDocument_Startup della classe ThisDocument: Questo codice aggiunge voci ai controlli ComboBoxContentControl e DropDownListContentControl delle tabelle e imposta il testo segnaposto visualizzato in ognuno di questi controlli prima che vengano modificati dall'utente.
ComboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own" ComboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0) ComboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1) ComboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2) DropDownListContentControl1.PlaceholderText = _ "Choose a rating (1 lowest, 3 highest)" DropDownListContentControl1.DropDownListEntries.Add("1", "1", 0) DropDownListContentControl1.DropDownListEntries.Add("2", "2", 1) DropDownListContentControl1.DropDownListEntries.Add("3", "3", 2)
comboBoxContentControl1.PlaceholderText = "Choose a title, or enter your own"; comboBoxContentControl1.DropDownListEntries.Add("Engineer", "Engineer", 0); comboBoxContentControl1.DropDownListEntries.Add("Designer", "Designer", 1); comboBoxContentControl1.DropDownListEntries.Add("Manager", "Manager", 2); dropDownListContentControl1.PlaceholderText = "Choose a rating (1 lowest, 3 highest)"; dropDownListContentControl1.DropDownListEntries.Add("1", "1", 0); dropDownListContentControl1.DropDownListEntries.Add("2", "2", 1); dropDownListContentControl1.DropDownListEntries.Add("3", "3", 2);
Protezione della tabella contenente informazioni su un dipendente affinché non sia modificabile da parte degli utenti
Utilizzare l'oggetto GroupContentControl dichiarato in precedenza per proteggere la tabella del dipendente. Dopo aver protetto la tabella, gli utenti possono modificare i controlli del contenuto della tabella ma non il testo della prima colonna né la struttura della tabella. Ad esempio, non è consentito aggiungere o eliminare righe e colonne. Per ulteriori informazioni su come utilizzare un oggetto GroupContentControl per proteggere parti di un documento, vedere Controlli del contenuto.
Per impedire agli utenti di modificare la tabella contenente informazioni su un dipendente
Aggiungere il codice seguente al metodo ThisDocument_Startup della classe ThisDocument, subito dopo il codice aggiunto nel passaggio precedente. Questo codice impedisce agli utenti di modificare la tabella del dipendente inserendo quest'ultima nell'oggetto GroupContentControl dichiarato in precedenza.
Me.Tables(1).Select() GroupControl1 = Me.Controls.AddGroupContentControl("groupControl1")
this.Tables[1].Range.Select(); groupControl1 = this.Controls.AddGroupContentControl("groupControl1");
Aggiunta di tabelle all'insieme di blocchi predefiniti
Aggiungere le tabelle a un insieme di blocchi predefiniti di documento del modello allo scopo di consentire agli utenti di inserire le tabelle appena create nel documento. Per ulteriori informazioni sui blocchi predefiniti di documento, vedere Controlli del contenuto.
Per aggiungere le tabelle ai blocchi predefiniti del modello
Aggiungere il codice seguente al metodo ThisDocument_Startup della classe ThisDocument, subito dopo il codice aggiunto nel passaggio precedente. Questo codice aggiunge nuovi blocchi predefiniti contenenti le tabelle all'insieme Microsoft.Office.Interop.Word.BuildingBlockEntries. Tale insieme contiene tutti i blocchi predefiniti riutilizzabili del modello. I nuovi blocchi predefiniti vengono definiti in una nuova categoria denominata Informazioni su dipendente e cliente e vengono associati al tipo di blocco predefinito Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1.
Dim template1 As Word.Template = TryCast(Me.AttachedTemplate, Word.Template) If template1 IsNot Nothing Then template1.BuildingBlockEntries.Add("Employee Table", _ Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", _ Me.Tables(1).Range, InsertOptions:=Word.WdDocPartInsertOptions.wdInsertContent) template1.BuildingBlockEntries.Add("Customer Table", _ Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", _ Me.Tables(2).Range, InsertOptions:=Word.WdDocPartInsertOptions.wdInsertContent) End If
Word.Template template1 = this.AttachedTemplate as Word.Template; if (template1 != null) { object description = null; template1.BuildingBlockEntries.Add("Employee Table", Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", this.Tables[1].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent); template1.BuildingBlockEntries.Add("Customer Table", Word.WdBuildingBlockTypes.wdTypeCustom1, "Employee and Customer Information", this.Tables[2].Range, ref description, Word.WdDocPartInsertOptions.wdInsertContent); }
Aggiungere il codice seguente al metodo ThisDocument_Startup della classe ThisDocument, subito dopo il codice aggiunto nel passaggio precedente. Questo codice elimina le tabelle dal modello. Le tabelle non sono più necessarie, poiché sono state aggiunte alla raccolta di blocchi predefiniti riutilizzabili del modello. Il codice fa passare il documento in modalità di progettazione in modo da consentire l'eliminazione della tabella protetta contenente le informazioni sul dipendente.
If Me.FormsDesign = False Then Me.ToggleFormsDesign() End If Me.Tables(2).Delete() Me.Tables(1).Delete() Me.ToggleFormsDesign()
if (!this.FormsDesign) { this.ToggleFormsDesign(); } this.Tables[2].Delete(); this.Tables[1].Delete(); this.ToggleFormsDesign();
Creazione di un controllo del contenuto che visualizza i blocchi predefiniti
Creare un controllo del contenuto che fornisce accesso ai blocchi predefiniti (ovvero, alle tabelle) create in precedenza. Gli utenti possono fare clic su questo controllo per aggiungere le tabelle al documento.
Per creare un controllo del contenuto che visualizza i blocchi predefiniti
Aggiungere il codice seguente al metodo ThisDocument_Startup della classe ThisDocument, subito dopo il codice aggiunto nel passaggio precedente. Questo codice inizializza l'oggetto BuildingBlockGalleryContentControl dichiarato in precedenza. L'oggetto BuildingBlockGalleryContentControl visualizza tutti i blocchi predefiniti definiti nella categoria denominata Informazioni su dipendente e cliente e a cui è stato associato il tipo di blocco predefinito Microsoft.Office.Interop.Word.WdBuildingBlockTypes.wdTypeCustom1.
BuildingBlockControl1 = Me.Controls.AddBuildingBlockGalleryContentControl( _ Me.Paragraphs(1).Range, "buildingBlockControl1") BuildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information" BuildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1 BuildingBlockControl1.PlaceholderText = "Choose your first building block" BuildingBlockControl2 = Me.Controls.AddBuildingBlockGalleryContentControl( _ Me.Paragraphs(2).Range, "buildingBlockControl2") BuildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information" BuildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1 BuildingBlockControl2.PlaceholderText = "Choose your second building block"
buildingBlockControl1 = this.Controls.AddBuildingBlockGalleryContentControl( this.Paragraphs[1].Range, "buildingBlockControl1"); buildingBlockControl1.BuildingBlockCategory = "Employee and Customer Information"; buildingBlockControl1.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1; buildingBlockControl1.PlaceholderText = "Choose your first building block"; buildingBlockControl2 = this.Controls.AddBuildingBlockGalleryContentControl( this.Paragraphs[2].Range, "buildingBlockControl2"); buildingBlockControl2.BuildingBlockCategory = "Employee and Customer Information"; buildingBlockControl2.BuildingBlockType = Word.WdBuildingBlockTypes.wdTypeCustom1; buildingBlockControl2.PlaceholderText = "Choose your second building block";
Verifica del progetto
Gli utenti possono fare clic sui controlli della raccolta di blocchi predefiniti del documento per inserire la tabella del dipendente o dei commenti del cliente. Gli utenti possono inoltre digitare o selezionare le risposte nei controlli del contenuto in entrambe le tabelle. Infine, gli utenti possono modificare le altre parti del tabella dei commenti del cliente, ma non le altre parti della tabella del dipendente.
Per verificare la tabella del dipendente
Premere F5 per eseguire il progetto.
Fare clic su Scegli primo blocco predefinito per visualizzare il primo controllo del contenuto della raccolta di blocchi predefiniti.
Fare clic sulla freccia a discesa accanto all'intestazione Raccolta personalizzata 1 del controllo e selezionare Tabella dipendente.
Fare clic nella cella a destra della cella Nome dipendente e digitare un nome.
Verificare che in questa cella sia possibile aggiungere solo testo. L'oggetto PlainTextContentControl consente agli utenti di aggiungere solo testo, non altri tipi di contenuto quali un elemento grafico o una tabella.
Fare clic nella cella a destra della cella Data assunzione e selezionare una data nella selezione data.
Fare clic nella cella a destra della cella Titolo e selezionare una delle voci disponibili nella casella combinata.
In alternativa, digitare il nome di un titolo non riportato nell'elenco. Ciò è possibile poiché l'oggetto ComboBoxContentControl consente agli utenti di selezionare un'opzione da un elenco di voci oppure di digitare voci specifiche.
Fare clic sull'icona nella cella a destra della cella Immagine e selezionare un'immagine da visualizzare.
Tentare di aggiungere o eliminare righe o colonne della tabella. Verificare l'impossibilità di modificare la struttura della tabella. L'oggetto GroupContentControl impedisce qualsiasi modifica.
Per verificare la tabella contenente i commenti di un cliente
Fare clic su Scegli secondo blocco predefinito per visualizzare il secondo controllo del contenuto della raccolta di blocchi predefiniti.
Fare clic sulla freccia a discesa accanto all'intestazione Raccolta personalizzata 1 del controllo e selezionare Tabella cliente.
Fare clic nella cella a destra della cella Nome cliente e digitare un nome.
Fare clic nella cella a destra della cella Livello di soddisfazione e selezionare una delle opzioni disponibili.
Verificare l'impossibilità di digitare voci personalizzate. L'oggetto DropDownListContentControl consente agli utenti solo di selezionare un'opzione da un elenco di voci.
Fare clic nella cella a destra della cella Commenti e digitare un commento.
In alternativa, aggiungere un contenuto non di testo, ad esempio un elemento grafico o una tabella incorporata. Ciò è possibile poiché l'oggetto RichTextContentControl consente agli utenti di aggiungere tipi di contenuto non di testo.
Verificare la possibilità di aggiungere e rimuovere righe e colonne della tabella. Ciò è possibile poiché la tabella non è stata protetta mediante l'inserimento in un oggetto GroupContentControl.
Chiudere il modello.
Passaggi successivi
Ulteriori informazioni sull'utilizzo dei controlli del contenuto sono disponibili nell'argomento seguente:
- Associazione dei controlli del contenuto a elementi XML, anche definiti web part XML personalizzate, incorporati nel documento. Per ulteriori informazioni, vedere Procedura dettagliata: associazione dei controlli del contenuto a parti XML personalizzate.
Vedere anche
Attività
Procedura: aggiungere controlli del contenuto ai documenti di Word
Procedura: proteggere parti di documenti mediante i controlli del contenuto
Concetti
Automazione di Word utilizzando oggetti estesi
Cenni preliminari sugli elementi e sui controlli host
Limitazioni a livello di codice degli elementi e dei controlli host
Aggiunta di controlli ai documenti di Office in fase di esecuzione