Procedura dettagliata: modifica del riquadro delle azioni in base al contesto dell'utente
Aggiornamento: novembre 2007
Si applica a |
---|
Le informazioni contenute in questo argomento riguardano solo i progetti Visual Studio Tools per Office e le versioni di Microsoft Office specificati. Tipo di progetto
Versione Microsoft Office
Per ulteriori informazioni, vedere la classe Funzionalità disponibili in base ai tipi di progetto e applicazione. |
In questa procedura dettagliata viene spiegato come rispondere agli eventi XMLNode. Quando un utente sposta il cursore in un documento, i controlli del riquadro azioni vengono nascosti o visualizzati.
In questa procedura dettagliata vengono illustrate le attività seguenti:
Aggiunta di controlli al riquadro azioni.
Visualizzazione del riquadro azioni all'apertura dell'applicazione.
Attivazione e disattivazione della visualizzazione dei controlli nel riquadro azioni sulla base delle azioni dell'utente nei nodi XML.
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 questa procedura dettagliata, è necessario disporre dei seguenti componenti:
Visual Studio Tools per Office (componente facoltativo di Visual Studio 2008 Professional e Visual Studio Team System).
Microsoft Office Word 2003.
Nota: |
---|
È possibile eseguire questa procedura dettagliata anche in Word 2007, ma per alcune istruzioni si presuppone l'utilizzo dei menu di Word 2003. |
Visual Studio Tools per Office viene installato per impostazione predefinita con le versioni di Visual Studio elencate. Per controllare se è installato, vedere Installazione di Visual Studio Tools per Office.
Creazione del progetto
Il primo passaggio consiste nella creazione di un progetto Documento di Word.
Per creare un nuovo progetto
Creare un progetto Documento di Word con il nome My Dynamic Actions Pane. Nella procedura guidata, scegliere Crea un nuovo documento. Per ulteriori informazioni, vedere Procedura: creare progetti Visual Studio Tools per Office.
Il nuovo documento di Word viene aperto nella finestra di progettazione di Visual Studio e il progetto My Dynamic Actions Pane viene aggiunto in Esplora soluzioni.
Creazione di uno schema da associare al documento
Per creare i nodi XML, trascinare gli elementi da uno schema XML al documento. Creare prima un file di schema, quindi creare un documento che corrisponda allo schema ed eseguire il mapping degli elementi al documento.
Per creare lo schema XML
Selezionare il progetto My Dynamic Actions Pane in Esplora soluzioni.
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento.
Nel riquadro Modelli, selezionare Schema XML.
Assegnare allo schema il nome ActionsPaneSample.xsd e scegliere Aggiungi.
In Esplora soluzioni, fare clic con il pulsante destro del mouse su ActionsPaneSample.xsd, quindi scegliere Apri con.
Nella finestra di dialogo Apri con selezionare Editor XML, quindi scegliere OK.
Sostituire il testo visualizzato nell'editor XML con il seguente:
<?xml version="1.0" encoding="utf-8" ?> <xs:schema targetNamespace="https://schemas.microsoft.com/vsto/samples" elementFormDefault="qualified" xmlns="https://schemas.microsoft.com/vsto/samples" xmlns:mstns="https://schemas.microsoft.com/vsto/samples" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Sample" type="SampleType"></xs:element> <xs:complexType name="SampleType"> <xs:all> <xs:element name="Insert" type="InsertType" minOccurs="0" maxOccurs="1" /> <xs:element name="Table" type="xs:string" minOccurs="0" maxOccurs="1" /> </xs:all> </xs:complexType> <xs:complexType name="InsertType"> <xs:sequence> <xs:element name="MemoTo" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="MemoFrom" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="MemoSubject" type="xs:string" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:complexType> </xs:schema>
Salvare il progetto.
Aggiunta di testo e di elementi XML al documento
Il documento per questa procedura dettagliata è sotto forma di promemoria. Aggiungere il testo al documento e quindi eseguire il mapping degli elementi XML alle posizioni nel documento.
Per aggiungere testo al documento
In Esplora soluzioni, fare clic con il pulsante destro del mouse su ThisDocument.cs o ThisDocument.vb, quindi scegliere Visualizza finestra di progettazione.
Aggiungere il testo riportato di seguito al documento di Word.
MEMORANDUM
To:
From:
Subject:
Nella tabella che segue sono riportate le informazioni sui contatti richieste.
Name
Address
City
State
Postal Code
Nancy Davolio
507 - 20th Ave. E., Apt. 2A
Seattle
WA
98122
Quindi, si eseguirà il mapping degli elementi XML al testo nel promemoria. Per ciascun elemento XML associato viene creato un controllo XMLNode. Al controllo XMLNode viene assegnato un nome composto dall'aggiunta dei nomi degli elementi padre e figlio alla parola Node. Ad esempio, se si associa l'elemento Insert che deriva dallo schema precedente, questo viene denominato SampleInsertNode. Per ulteriori informazioni sui controlli, vedere Cenni preliminari sugli elementi e sui controlli host.
Per associare lo schema al documento
Aprire la finestra di dialogo Modelli e aggiunte. Per eseguire questa operazione in Word 2007:
Nella barra multifunzione, fare clic sulla scheda Sviluppatore.
Nota: Se la scheda Sviluppo non è visibile, è necessario prima visualizzarla. Per ulteriori informazioni, vedere la classe Procedura: visualizzare la scheda Sviluppo nella barra multifunzione.
Nel gruppo XML, fare clic su Schema.
Verrà visualizzata la finestra di dialogo Modelli e aggiunte.
Per aprire la finestra di dialogo Modelli e aggiunte in Word 2003:
Fare clic su Strumenti di Microsoft Office Word dal menu Strumenti e scegliere Modelli e aggiunte.
Verrà visualizzata la finestra di dialogo Modelli e aggiunte.
Nota: Se l'opzione Strumenti di Microsoft Office Word non è disponibile nel menu Strumenti, fare clic sul documento per attivarlo. Per ulteriori informazioni, vedere la classe Menu di Office in ambiente Visual Studio.
Selezionare la scheda Schema XML nella finestra di dialogo Modelli e aggiunte, quindi scegliere Aggiungi schema.
Selezionare lo schema ActionsPaneSample.xsd creato in precedenza, contenuto nella directory del progetto, e scegliere Apri.
Scegliere OK nella finestra di dialogo Impostazioni schema.
Scegliere OK per chiudere la finestra di dialogo Modelli e aggiunte.
Verrà aperto il riquadro attività Struttura XML.
Per associare elementi XML al documento
Selezionare l'elemento Sample nel riquadro attività Struttura XML.
Scegliere Applica all'intero documento quando richiesto.
Selezionare le tre righe di testo To, From e Subject e selezionare l'elemento Insert nel riquadro attività Struttura XML.
Posizionare il cursore dopo To:, premere due volte il tasto TAB e selezionare l'elemento MemoTo per inserirlo.
Posizionare il cursore dopo From:, premere due volte il tasto TAB e selezionare l'elemento MemoFrom.
Posizionare il cursore dopo Subject:, premere una volta il tasto TAB e selezionare l'elemento MemoSubject.
Selezionare la tabella in modo da evidenziarla completamente e selezionare l'elemento Table per applicarlo.
I tag XML appaiono all'interno delle celle della tabella.
Deselezionare la casella di controllo Mostra tag XML nel documento.
Scegliere Opzioni XML nella parte inferiore del riquadro attività Struttura XML.
Selezionare la casella di controllo Ignora contenuto misto e scegliere OK.
Chiudere il riquadro attività Struttura XML.
Aggiunta di controlli al riquadro delle azioni
Per progettare il layout dei controlli sul riquadro azioni si utilizza la finestra di progettazione di un controllo chiamato controllo del riquadro azioni che fondamentalmente corrisponde a un controllo utente. È possibile trascinare gli altri controlli, ad esempio pulsanti e caselle di testo, sul controllo del riquadro azioni, e disporli. Per modificare il riquadro azioni secondo il contesto dell'utente, è possibile aggiungere e progettare un controllo del riquadro azioni per ogni contesto e quindi attivare e disattivare in base alle esigenze.
In questa procedura dettagliata vengono utilizzati tre controlli del riquadro azioni. Il primo controllo del riquadro azioni contiene tre caselle di testo e un pulsante per permettere agli utenti di inserire i dati e aggiungerli al documento. Il secondo controllo del riquadro azioni contiene un pulsante che consente di aprire la finestra di dialogo Proprietà tabella. Il terzo controllo del riquadro azioni contiene una casella di controllo che consente di visualizzare tutti i controlli presenti sul riquadro, a prescindere dalla posizione del cursore nel documento.
Per aggiungere un controllo del riquadro delle azioni
Selezionare il progetto My Dynamic Actions Pane in Esplora soluzioni.
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento, selezionare Controllo riquadro azioni, specificare il nome AddTextControl e scegliere Aggiungi.
Modificare la proprietà Size del controllo del riquadro delle azioni in 170, 135.
Per aggiungere controlli Windows Form al primo controllo del riquadro delle azioni
Dalla scheda Windows Form della Casella degli strumenti, trascinare un controllo Label su AddTextControl e modificare la proprietà Text in To:.
Aggiungere un controllo Textbox ad AddTextControl e modificare le seguenti proprietà.
Proprietà
Valore
Nome
toBox
Size
110, 20
Aggiungere un secondo controllo Label a AddTextControl e modificare la proprietà Text in From:.
Aggiungere un secondo controllo Textbox ad AddTextControl e modificare le seguenti proprietà.
Proprietà
Valore
Nome
fromBox
Size
110, 20
Aggiungere un terzo controllo Label ad AddTextControl nella casella di testo precedente e modificare la proprietà Text in Subject:.
Aggiungere un terzo controllo Textbox ad AddTextControl accanto all'etichetta precedente e modificare le seguenti proprietà.
Proprietà
Valore
Nome
subjectBox
Multiline
True
Size
110, 40
Ridimensionare la casella di testo subjectBox per consentire l'inserimento di più righe.
Aggiungere un controllo Button ad AddTextControl e modificare le seguenti proprietà.
Proprietà
Valore
Nome
insertText
Text
Insert
Per creare il secondo controllo del riquadro delle azioni
Aggiungere un secondo controllo del riquadro delle azioni al progetto e denominarlo ShowPropertiesControl.
Modificare la proprietà Size del riquadro delle azioni in 170, 50.
Dalla scheda Windows Form della Casella degli strumenti, trascinare un controllo Button su ShowPropertiesControl e modificare le seguenti proprietà.
Proprietà
Valore
Nome
tableProperties
Text
Table Properties
Enabled
False
Size
100, 23
In C#, modificare la proprietà Modifiers del pulsante in Internal.
Per creare il terzo controllo del riquadro delle azioni
Aggiungere un terzo controllo del riquadro delle azioni al progetto e denominarlo ShowAllControl.
Modificare la proprietà Size del controllo del riquadro delle azioni in 170, 75.
Dalla scheda Windows Form della Casella degli strumenti, aggiungere un controllo GroupBox a ShowAllControl e modificare la proprietà Text in My Actions Pane.
Aggiungere un controllo CheckBox a ShowAllControl nella parte superiore della casella di gruppo e modificare le seguenti proprietà.
Proprietà
Valore
Nome
showCheck
Text
Show All Controls
In C#, modificare la proprietà Modifiers della casella di controllo in Internal.
Aggiunta di codice in risposta al contesto utente
Ora è possibile scrivere il codice per visualizzare il riquadro azioni e aggiungere e rimuovere i controlli del riquadro azioni in base alla posizione del cursore nel documento. Il codice viene inserito nei gestori eventi dei controlli XMLNode.
Per aggiungere codice agli eventi del controllo XMLNode
In Esplora soluzioni, fare clic con il pulsante destro del mouse su ThisDocument.vb o ThisDocument.cs e scegliere Visualizza codice.
Creare un riferimento a una variabile per ciascun controllo del riquadro delle azioni nella sezione delle dichiarazioni di ThisDocument.
Dim addText As New AddTextControl Dim showProperties As New ShowPropertiesControl Dim showAll As New ShowAllControl Friend WithEvents showCheck As System.Windows.Forms.CheckBox
private AddTextControl addText = new AddTextControl(); private ShowPropertiesControl showProperties = new ShowPropertiesControl(); private ShowAllControl showAll = new ShowAllControl();
Nel gestore eventi Startup di ThisDocument, scrivere il codice riportato di seguito da aggiungere al controllo ShowAllControl per visualizzare il riquadro delle azioni.
Me.ActionsPane.Controls.Add(showAll) showCheck = showAll.showCheck
this.ActionsPane.Controls.Add(showAll);
Nota: L'ordine di aggiunta dei controlli al riquadro delle azioni determina la loro posizione. Se si desidera che un controllo sia sempre visibile nella parte superiore del riquadro delle azioni, aggiungerlo per primo. L'ordine dipende anche dalla proprietà StackOrder del riquadro delle azioni. Per ulteriori informazioni, vedere Procedura: gestire il layout di controllo dei riquadri delle azioni.
Aggiungere il codice riportato di seguito al gestore eventi ContextEnter del controllo SampleInsertNode.
Private Sub SampleInsertNode_ContextEnter(ByVal sender As Object, _ ByVal e As Microsoft.Office.Tools.Word.ContextChangeEventArgs) _ Handles SampleInsertNode.ContextEnter If showAll.showCheck.Checked = False Then Me.ActionsPane.Controls.Add(addText) Me.ActionsPane.Controls.Remove(showProperties) End If End Sub
private void SampleInsertNode_ContextEnter(object sender, Microsoft.Office.Tools.Word.ContextChangeEventArgs e) { if (showAll.showCheck.Checked == false) { this.ActionsPane.Controls.Add(addText); this.ActionsPane.Controls.Remove(showProperties); } }
Aggiungere il codice riportato di seguito al gestore eventi ContextLeave del controllo SampleInsertNode per nascondere il controllo dopo che l'utente ha spostato il cursore al di fuori del nodo XML.
Private Sub SampleInsertNode_ContextLeave(ByVal sender As Object, _ ByVal e As Microsoft.Office.Tools.Word.ContextChangeEventArgs) _ Handles SampleInsertNode.ContextLeave If showAll.showCheck.Checked = False Then Me.ActionsPane.Controls.Remove(addText) End If End Sub
private void SampleInsertNode_ContextLeave(object sender, Microsoft.Office.Tools.Word.ContextChangeEventArgs e) { if (showAll.showCheck.Checked == false) { this.ActionsPane.Controls.Remove(addText); } }
Aggiungere il codice riportato di seguito al gestore eventi ContextEnter del controllo SampleTableNode.
Private Sub SampleTableNode_ContextEnter(ByVal sender As Object, _ ByVal e As Microsoft.Office.Tools.Word.ContextChangeEventArgs) _ Handles SampleTableNode.ContextEnter If showAll.showCheck.Checked = False Then Me.ActionsPane.Controls.Remove(addText) Me.ActionsPane.Controls.Add(showProperties) End If showProperties.tableProperties.Enabled = True End Sub
private void SampleTableNode_ContextEnter(object sender, Microsoft.Office.Tools.Word.ContextChangeEventArgs e) { if (showAll.showCheck.Checked == false) { this.ActionsPane.Controls.Remove(addText); this.ActionsPane.Controls.Add(showProperties); } showProperties.tableProperties.Enabled = true; }
Aggiungere il codice riportato di seguito al gestore eventi ContextLeave del controllo SampleTableNode per nascondere il controllo dopo che l'utente ha spostato il cursore al di fuori del nodo XML.
Private Sub SampleTableNode_ContextLeave(ByVal sender As Object, _ ByVal e As Microsoft.Office.Tools.Word.ContextChangeEventArgs) _ Handles SampleTableNode.ContextLeave If showAll.showCheck.Checked = False Then Me.ActionsPane.Controls.Remove(showProperties) End If showProperties.tableProperties.Enabled = False End Sub
private void SampleTableNode_ContextLeave(object sender, Microsoft.Office.Tools.Word.ContextChangeEventArgs e) { if (showAll.showCheck.Checked == false) { this.ActionsPane.Controls.Remove(showProperties); } showProperties.tableProperties.Enabled = false; }
In C# è necessario aggiungere gestori eventi per i controlli XMLNode. È possibile inserire il codice nel gestore eventi Startup di ThisDocument. Per ulteriori informazioni sulla creazione di gestori eventi, vedere Procedura: creare gestori eventi in Visual Studio Tools per Office.
this.SampleInsertNode.ContextEnter += new Microsoft.Office.Tools.Word. ContextChangeEventHandler(SampleInsertNode_ContextEnter); this.SampleInsertNode.ContextLeave += new Microsoft.Office.Tools.Word. ContextChangeEventHandler(SampleInsertNode_ContextLeave); this.SampleTableNode.ContextEnter += new Microsoft.Office.Tools.Word. ContextChangeEventHandler(SampleTableNode_ContextEnter); this.SampleTableNode.ContextLeave += new Microsoft.Office.Tools.Word. ContextChangeEventHandler(SampleTableNode_ContextLeave);
Verifica
Salvare il progetto e verificare che i controlli del riquadro delle azioni vengano modificati quando il cursore viene spostato nel documento.
Per eseguire il test del progetto
Premere F5 per eseguire il progetto.
Spostare il punto di inserimento sulla parola To e verificare che il controllo addText del riquadro delle azioni sia visibile nel riquadro.
Spostare il punto di inserimento all'interno della tabella e verificare che il controllo showProperties del riquadro delle azioni sia visibile nel riquadro.
Spostare il punto di inserimento sulla parola MEMORANDUM e verificare che i controlli addText o showProperties del riquadro delle azioni non siano visibili nel riquadro.
Aggiunta di codice per rispondere agli eventi di controllo nel riquadro delle azioni
I controlli sul riquadro azioni non hanno ancora eseguito alcuna operazione. L'ultimo passaggio consiste nello scrivere il codice per la visualizzazione di tutti i controlli, l'inserimento del testo e la visualizzazione della finestra di dialogo Proprietà tabella.
Per visualizzare tutti i controlli presenti nel riquadro delle azioni
Aggiungere il seguente codice a ThisDocument.
Private Sub showCheck_CheckStateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles showCheck.CheckStateChanged If showAll.showCheck.Checked = True Then Me.ActionsPane.Controls.Add(addText) Me.ActionsPane.Controls.Add(showProperties) Else Me.ActionsPane.Controls.Remove(addText) Me.ActionsPane.Controls.Remove(showProperties) End If End Sub
private void showCheck_CheckStateChanged(object sender, EventArgs e) { if (showAll.showCheck.Checked) { this.ActionsPane.Controls.Add(addText); this.ActionsPane.Controls.Add(showProperties); } else { this.ActionsPane.Controls.Remove(addText); this.ActionsPane.Controls.Remove(showProperties); } }
Per C#, è necessario aggiungere un gestore eventi per il controllo checkbox. È possibile inserire il codice nel gestore eventi Startup di ThisDocument.
showAll.showCheck.CheckStateChanged += new EventHandler(showCheck_CheckStateChanged);
Per inserire testo quando viene premuto il pulsante Inserisci
In Esplora soluzioni, fare clic con il pulsante destro del mouse su AddTextControl.vb o AddTextControl.cs e scegliere Visualizza codice.
Scrivere il codice riportato di seguito nel gestore eventi Click del pulsante insertText.
Private Sub insertText_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles insertText.Click With Globals.ThisDocument .InsertMemoFromNode.Text = Me.fromBox.Text .InsertMemoToNode.Text = Me.toBox.Text .InsertMemoSubjectNode.Text = Me.subjectBox.Text End With ' Clear the text boxes. Me.fromBox.Text = "" Me.toBox.Text = "" Me.subjectBox.Text = "" End Sub
private void insertText_Click(object sender, System.EventArgs e) { Globals.ThisDocument.InsertMemoFromNode.Text = this.fromBox.Text; Globals.ThisDocument.InsertMemoToNode.Text = this.toBox.Text; Globals.ThisDocument.InsertMemoSubjectNode.Text = this.subjectBox.Text; // Clear the text boxes. this.fromBox.Text = ""; this.toBox.Text = ""; this.subjectBox.Text = ""; }
Per C#, è necessario aggiungere un gestore eventi per il pulsante. È possibile inserire il codice nel costruttore AddTextControl dopo la chiamata a InitializeComponent.
public AddTextControl() { InitializeComponent(); this.insertText.Click += new System.EventHandler(this.insertText_Click); }
Per visualizzare la finestra di dialogo Proprietà tabella
In Esplora soluzioni, fare clic con il pulsante destro del mouse su ShowPropertiesControl.vb o ShowPropertiesControl.cs e scegliere Visualizza codice.
Aggiungere il codice riportato di seguito al gestore eventi Click del pulsante tableProperties.
Private Sub tableProperties_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles tableProperties.Click Globals.ThisDocument.Application.Dialogs( _ Word.WdWordDialog.wdDialogTableProperties).Show() End Sub
private void tableProperties_Click(object sender, System.EventArgs e) { object timeout = 0; Globals.ThisDocument.Application.Dialogs[ Microsoft.Office.Interop.Word.WdWordDialog.wdDialogTableProperties] .Show(ref timeout); }
Per C#, è necessario aggiungere un gestore eventi per il pulsante. È possibile inserire il codice nel costruttore ShowPropertiesControl dopo la chiamata a InitializeComponent.
public ShowPropertiesControl() { InitializeComponent(); this.tableProperties.Click += new System.EventHandler(this.tableProperties_Click); }
Test dell'applicazione
A questo punto, è possibile sottoporre a ulteriori test il documento per verificare la funzionalità dei controlli del riquadro delle azioni.
Per testare il documento
Premere F5 per eseguire il progetto.
Verificare che il riquadro delle azioni sia visibile.
Spostare il cursore sulla sezione del documento che contiene le righe To, From e Subject e verificare che i controlli addText siano visualizzati nel riquadro delle azioni.
Inserire testo nelle caselle di testo To, From e Subject del riquadro delle azioni e scegliere Inserisci.
Spostare il cursore sulla tabella e verificare che il controllo showProperties sia visualizzato nel riquadro delle azioni.
Scegliere il pulsante Proprietà tabella e verificare che venga aperta la finestra di dialogo Proprietà tabella.
Selezionare la casella di controllo Mostra tutto e verificare che tutti i controlli presenti nel riquadro delle azioni siano visibili.
Spostare il cursore al di fuori della tabella e verificare che il pulsante Proprietà tabella sia disattivato.
Passaggi successivi
In questa procedura dettagliata sono illustrate informazioni di base sulla modifica del riquadro delle azioni sulla base del contesto utente. Di seguito sono elencate alcune procedure che potrebbero essere necessarie per estendere il progetto:
Distribuzione del progetto. Per ulteriori informazioni, vedere la classe Procedura: distribuire le soluzioni Office (2003 System).
Associazione di dati ai controlli in Word. Per ulteriori informazioni, vedere Procedura dettagliata: associazione di dati a controlli in un riquadro delle azioni di Word.
Associazione di dati ai controlli in Excel. Per ulteriori informazioni, vedere Procedura dettagliata: associazione di dati a controlli in un riquadro delle azioni di Excel.
Vedere anche
Attività
Procedura: aggiungere un riquadro per le azioni nei documenti di Word
Procedura: aggiungere un riquadro per le azioni nelle cartelle di lavoro di Excel
Procedura: gestire il layout di controllo dei riquadri delle azioni