Adicionar controles a documentos do Office em tempo de execução
Se aplica a |
---|
As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office. Projetos de nível de documento
Projetos de nível de aplicativo
For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto. |
Você pode adicionar controles a um documento do Microsoft Office Word e a pasta de trabalho do Microsoft Office Excel e também Remover-las, em tempo de execução.Controla o que você Adicionar para documentos em tempo de execução são chamados de controles dinâmicos .Iniciando no Visual Studio 2008 Serviço Pack 1 (SP1), você pode adicionar controles dinâmicos para documentos e pastas de trabalho usando suplementos em nível de aplicativo.
Este tópico fornece as seguintes informações:
Gerenciar controles em tempo de execução usando as coleções de controle
Adicionar host controles a documentos
Adicionar controles de Windows Forms a documentos
Gerenciando controles em tempo de execução usando as coleções de controle
Para adicionar, obter ou remover controles em tempo de execução, use métodos para auxiliar a Microsoft.Office.Tools.Excel.ControlCollection e Microsoft.Office.Tools.Word.ControlCollection classes.
A maneira que você acessar as coleções de Controlarar depende do tipo de projeto que você está desenvolvendo:
Em um projeto de nível de documento para o Excel, use a propriedade Worksheet.Controls do Sheet1, Sheet2e Sheet3 classes.Para obter mais informações sobre essas classes, consulte Item de host de planilha.
Em um projeto de nível de documento do Word, use a propriedade Document.Controls da classe ThisDocument.Para obter mais informações sobre essa classe, consulte Item de host do documento.
Em um projeto de nível de aplicativo para o Excel ou Word, use a propriedade Controls de um Microsoft.Office.Tools.Excel.Worksheet ou Microsoft.Office.Tools.Word.Document que você gerar em tempo de execução.Para obter mais informações sobre como gerar esses objetos em tempo de execução, consulte Estendendo os documentos do Word e Excel pastas de trabalho no nível de aplicativo Adicionar-ins em tempo de execução.
Adicionar Controles
A Microsoft.Office.Tools.Excel.ControlCollection e classes de Microsoft.Office.Tools.Word.ControlCollection Incluir métodos auxiliar que podem ser usados para adicionar controles de host e controles de Windows Forms ComComumComum a docComumentos e planilhas.Cada Nome do Método tem o Formatarar Add<Controlarar classe>, onde de classe de Controlarar de é o Nome de Classe do Controlarar que você deseja adicionar.Por exemplo, para adicionar um Controlarar NamedRange ao seu documento, use o método AddNamedRange.Para um Concluir lista de métodos auxiliares, verá Métodos de auxiliar para controles de host e Métodos de auxiliar para controles Windows Forms.
O exemplo de código a seguir adiciona um NamedRange a Sheet1 em um projeto de nível de documento para o Excel.
Dim range1 As Excel.Range = Globals.Sheet1.Range("A1", "D5")
Dim namedRange1 As Microsoft.Office.Tools.Excel.NamedRange = _
Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource")
Excel.Range range1 = Globals.Sheet1.Range["A1", "D5"];
Microsoft.Office.Tools.Excel.NamedRange namedRange1 =
Globals.Sheet1.Controls.AddNamedRange(range1, "ChartSource");
Acessar e excluir controles
Você pode usar a propriedade de Controls de um Microsoft.Office.Tools.Excel.Worksheet ou Microsoft.Office.Tools.Word.Document para iterar em Tudo controles em seu documento, incluindo os controles adicionados em tempo de design.Controla o que você Adicionar em tempo de design também são chamado estático controla.
Você pode remover controles dinâmicos, chamando o método Delete do controle, ou chamando o método Remove de cada coleção Controls.O exemplo de código a seguir usa o método Remove para remover um NamedRange a Sheet1 em um projeto de nível de documento para o Excel.
Globals.Sheet1.Controls.Remove("ChartSource")
Globals.Sheet1.Controls.Remove("ChartSource");
Não é possível remover controles estáticos em tempo de execução.Se você tentar usar o método de Delete ou Remove para remover um Controlarar estático, um CannotRemoveControlException será lançada.
Observação: |
---|
Fazer não programaticamente Remover controles Em o Shutdown manipulador de eventos do documento.Os elementos de interface do usuário do documento não estão mais disponíveis quando o evento Shutdown é gerado.Se você quiser remover controles antes de fecha o documento, Adicionar seu código ao manipulador de eventos para outro evento, como Document.BeforeClose ou Document.BeforeSave para o Word, ou Workbook.BeforeCloseou Workbook.BeforeSave para o Excel. |
Adicionando controles de host para documentos
Quando você adiciona por programação controles de host para documentos, você deve fornecer um nome que identifica exclusivamente o controle e você deve especificar onde adicionar o controle no documento.Para obter instruções específicas, consulte os tópicos a seguir:
Para obter mais informações sobre controles de host, consulte Itens de host e Visão geral sobre controles de host.
Quando um documento é salvo e, em seguida, Fechada, todos os controles criados dinamicamente host são desconectados de seus eventos e eles percam a funcionalidade de ligação de dados.Você pode adicionar código à sua solução para recriar os controles de host quando o documento for reaberto.For more information, see Persistência controles dinâmicos em documentos do Office.
Observação: |
---|
Métodos auxiliares não são fornecidos para o seguinte Host controles, como o Se controles não pode ser adicionado programaticamente a documentos: XmlMappedRange, XMLNode, and XMLNodes. |
Adicionando controles de formulários do Windows para documentos
Quando você programaticamente Adicionar um Controlarar Windows Forms em um documento, você deve fornecer o local do Controlarar e um nome que identifica exclusivamente o Controlarar.Ferramentas do Visual Studio para o Office fornece métodos de auxiliar para cada Controlarar.Esses métodos são sobrecarregados para que você pode passar um intervalo ou coordenadas específicas para a localidade do Controlarar. Para obter instruções específicas, consulte Como: Adicionar controles de Windows Forms a documentos do Office.
Quando um documento é salvo e, em seguida, Fechada, todos os controles Windows Forms criados dinamicamente são removidos de o documento.Você pode adicionar código à sua solução para recriar os controles quando o documento for reaberto.Se você criar controles de Windows Forms dinâmicos usando um nível de aplicativo Adicionar - in, os wrappers do ActiveX para os controles são deixados no documento.For more information, see Persistência controles dinâmicos em documentos do Office.
Observação: |
---|
Controles Windows Forms não podem ser programaticamente Adicionado para documentos protegidos por.Se você programaticamente desproteger um Documento do Word ou planilha do Excel para adicionar um Controlarar, você deve Gravar código adicional para remover o wrapper do ActiveX do Controlarar quando o documento é Fechada.Wrapper do ActiveX do Controlarar não será excluído automaticamente de documentos protegidos. |
Adicionando controles Personalizars
Se você quiser adicionar um System.Windows.Forms.Control não dá suporte os métodos de auxiliares disponível (por exemplo, um Controlarar de usuário Personalizar), use os seguintes métodos:
Para que o Excel, use um dos métodos de AddControl() da classe Microsoft.Office.Tools.Excel.ControlCollection.
Para o Word, use um dos métodos de AddControl() da classe Microsoft.Office.Tools.Word.ControlCollection.
Para adicionar o Controlarar, passe a System.Windows.Forms.Control, um local para o Controlarar e um nome que identifica exclusivamente o Controlarar para o método AddControl.Para que o Excel, esse método retorna um OLEObject.Para o Word, esse método retorna um OLEControl.Esses objetos Definirm como o Controlarar interage com a planilha ou documento.
O exemplo de código a seguir demonstra como usar o método AddControl(Control, Range, String) para adicionar dinamicamente um Controlarar de usuário Personalizar a uma planilha.Neste exemplo, o Controlarar de usuário é chamado UserControl1, e o Range é chamado range1.Este exemplo pressupõe que ele está sendo executado de uma das classes n Sheet em um projeto de nível de documento para o Excel.
Dim customControl As New UserControl1()
Dim dynamicControl As Microsoft.Office.Tools.Excel.OLEObject = _
Me.Controls.AddControl(customControl, range1, "dynamic")
UserControl1 customControl = new UserControl1();
Microsoft.Office.Tools.Excel.OLEObject dynamicControl =
this.Controls.AddControl(customControl, range1, "dynamic");
Usando membros de controles Personalizars
Depois de usar um dos métodos AddControl para adicionar um Controlarar a uma planilha ou documento, você agora tem dois objetos de outro Controlarar:
System.Windows.Forms.Control que representa o Controlarar Personalizar.
O OLEObject ou OLEControl que representa o Controlarar depois que ele foi adicionado à planilha ou documento.
Muitas propriedades e métodos são compartilhados entre esses controles.É importante que você Acessar esses métodos e propriedades pelo Controlarar apropriado:
Para acessar propriedades e métodos que pertencem somente ao Controlarar Personalizar, use o System.Windows.Forms.Control.
Para acessar propriedades e métodos que são compartilhados pelos controles, use o OLEObject ou OLEControl.
Se você acessar um método compartilhado ou uma propriedade da System.Windows.Forms.Control, ele pode falhar sem aviso ou de notificação ou ele pode produzir resultados inválidos.Sempre usar métodos ou propriedades do OLEObject ou OLEControl, a menos que o método ou propriedade necessária não esteja disponível; somente então deve você Referência o System.Windows.Forms.Control.
Por exemplo, tanto a clAmbosse de OLEObject e a clAmbosse System.Windows.Forms.Control possuem uma propriedade Top.Para obter ou definir a distância entre a parte superior do Controlarar e o início do documento, use a propriedade Top a OLEObject, não a propriedade Top a System.Windows.Forms.Control.
' Property is set in relation to the document.
dynamicControl.Top = 100
' Property is set in relation to the container control.
customControl.Top = 100
// Property is set in relation to the document.
dynamicControl.Top = 100;
// Property is set in relation to the container control.
customControl.Top = 100;
Consulte também
Tarefas
Como: Adicionar controles de ListObject a planilhas
Como: Adicionar controles NamedRange a planilhas
Como: Adicionar controles de gráfico a planilhas
Como: Adicionar controles de conteúdo a documentos do Word
Como: Adicionar indicador controles a documentos do Word
Como: Adicionar controles de Windows Forms a documentos do Office
Conceitos
Persistência controles dinâmicos em documentos do Office
Métodos de auxiliar para controles de host
Métodos de auxiliar para controles Windows Forms
Controles de formulários do Windows em Visão geral de documentos do Office
Referência
Outros recursos
Controles em documentos do Office
Date |
History |
Motivo |
---|---|---|
De 2008 de julho |
Adicionados informações sobre como adicionar controles aos documentos usando suplementos em nível de aplicativo. |
Alteração de recurso do SP1. |