Demonstra Passo a passo: Vincular dados a controles em um painel de ações do Word
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. Tipo de Projeto
Versão do Microsoft Office
For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto. |
Esta explicação passo a passo demonstra dados vinculando a controles em um painel de ações no Microsoft Office Word.Os controles demonstram a relação mestre/detalhes entre tabelas em um SQL Servidor banco de dados.
Essa explicação passo a passo ilustra as seguintes tarefas:
Criando um painel de ações com controles Windows Forms que são Ligados a dados.
Usar um relacionamento mestre/detalhes para exibir dados nos controles.
Mostrar o painel de ações quando o aplicativo é aberto.
Observação: |
---|
Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir.A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos.Para obter mais informações, consulte Configurações do Visual Studio. |
Pré-requisitos
Para completar este passo a passo, são necessários os seguintes componentes:
Ferramentas do Visual Studio para o Office (um componente opcional do O Visual Studio 2008 Professional e Visual Studio Team System).
O Microsoft Office Word 2003 ou Microsoft Office Word 2007.
Acessar a um servidor com o banco de dados de exemplo Northwind SQL Server.
Permissões para ler e gravar para o SQL Servidor banco de dados.
Ferramentas do Visual Studio para o Office é instalado por padrão com as versões listadas do Visual Studio.Para Marcar se ele está instalado, Marcar Instalando o Visual Studio Tools para Office.
Criando o projeto
A Primeiro etapa é criar um projeto de documento do Word.
Para criar um novo projeto
Criar um projeto de documento do Word com o nome meu painel de ações do Word.No assistente, Selecionar Criar um documento novo.
For more information, see Como: Criar o Visual Studio Tools para projetos do Office.
O Visual Studio abre o novo documento do Word no designer e adiciona o projeto de meu painel de ações do Word para Gerenciador de Soluções.
Adicionando controles para o painel de ações
Para esta explicação passo a passo, você precisa um controle de painel de ações que contém dados-Ligado à controles Windows Forms.Adicionar uma fonte de dados ao projeto e arraste controles partir a janela de Data Sources para o controle do painel de ações.
Para adicionar um Controlarar de painel de ações
Selecionar o projeto de meu painel de ações do Word no Gerenciador de Soluções.
No menu Project, clique em Add New Item.
No Adicionar Novo Item caixa de diálogo, Selecionar De controle do painel de ações, nomeá-la ActionsControle, em seguida, clique em Adicionar.
Para adicionar uma Novo Origem de dados para o projeto
Se a janela de Data Sources não estiver visível, clique em do Show Data Sources no menu Dados.
Observação: Se Mostrar fontes de dados não está disponível, clique no documento do Word e, em seguida, Marcar novamente.
Clique em Adicionar Nova Origem de Dados para iniciar o Fonte de Dados Configuration Assistente .
Selecione Database e clique em Next.
Selecionar uma conexão de dados ao exemplo a Northwind SQL Servidor banco de dados ou adicionar uma Novo conexão usando o botão de Novo conexão.
Clique em Next.
Desmarque a opção para salvar a conexão se for Selecionado e clique em Avançar de .
Expandirir o nó de tabelas na janela banco de dados de objetos.
Selecionar o Caixa de Marcar próximo ao Fornecedores e Produtos tabelas.
Clique em Finish.
O assistente adiciona a tabela de Fornecedores e Produtos tabela para a janela de fontes de dados.Ele também adiciona um dataset tipado ao seu projeto que está visível no Gerenciador de Soluções.
Para adicionar controles de Windows Forms ligados a dados a um controle de painel de ações
Na janela Dadosta Sources, Expandirir a tabela de fornecedores.
Clique no Soltar - para baixo no nó nome da empresa e Selecionar Caixa de Combinação.
Arraste CompanyName da janela de De fontes de dados de para o Controlarar do painel de ações.
Um Controlarar de ComboBox é criado no Controlarar do painel de ações.Ao mesmo tempo, um BindingSource denominados SuppliersBindingSource, um adaptador de tabela e um DataSet são adicionados ao projeto na bandeja do componente.
Selecionar SuppliersBindingNavigator na bandeja de Do componente de e Pressionarionar Excluir.Você não usará o SuppliersBindingNavigator nesta explicação passo a passo.
Observação: Excluindo o SuppliersBindingNavigator não Remover Tudo o código que foi gerado por ele.Você pode remover esse código.
Mover o Caixa de Combinação para que ele está sob o rótulo e alterar a propriedade de Tamanho para 171, 21.
Na janela Dadosta Sources, Expandirir a tabela de De produtos que é um filho Dados tabela fornecedores.
Clique no Soltar - para baixo no nó ProductName e Selecionar ListBox.
Arraste ProductName para o Controlarar do painel de ações.
Um Controlarar de ListBox é criado no Controlarar do painel de ações.Ao mesmo tempo, um BindingSourceProductBindingSource e um adaptador de tabela são adicionados ao projeto na bandeja do componente.
Mover a caixa de listagem para que ele fique sob o rótulo e Alterar Propriedade de tamanho para 171,95.
Arraste um Button de do Caixa de Ferramentas para o Controlarar de painel de ações e coloque-abaixo dCaixa de Listagem.
Clique o Buttoncom o botão direito do mouse, clique em Propriedades no menu de atalho e alterar as propriedades a seguintes.
Propriedade
Value (Valor)
Nome
Inserir
Texto
Inserir
Redimensionar o controle de usuário ajustar os controles.
Configuração Até a Origem de dados
Para configurar a Origem de dados, Adicionar código ao evento Load do Controlarar de painel de ações para preencher o Controlarar com dados da DataTablee definir as propriedades de DataSource para cada Controlarar e DataMember.
Para carregar o Controlarar com dados
No manipulador de eventos da classe Load , ActionsControl Adicionar o código a seguir.
Private Sub ActionsControl_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Load Me.SuppliersTableAdapter.Fill(Me.NorthwindDataSet.Suppliers) Me.ProductsTableAdapter.Fill(Me.NorthwindDataSet.Products) End Sub
private void ActionsControl_Load(object sender, EventArgs e) { this.suppliersTableAdapter.Fill(this.northwindDataSet.Suppliers); this.productsTableAdapter.Fill(this.northwindDataSet.Products); }
Em C#, você deve anexar o manipulador de eventos ao evento Load.Você pode colocar esse código no construtor ActionsControl , após a chamada para InitializeComponent.Para obter mais informações sobre como criar manipuladores de eventos, consulte Como: Criar manipuladores de eventos no Visual Studio Tools for Office.
this.Load += new EventHandler(ActionsControl_Load);
Definir propriedades de vinculação de dados dos controles
Selecione o controle CompanyNameComboBox.
Na janela de A propriedades, clique no Botão Direito da propriedade de De fonte de dados de e Selecionar SuppliersBindingSource.
Clique no Botão Direito do DisplayMember propriedade e Selecionar CompanyName.
Expandira DataBindings propriedade, clique no Botão Direito do Texto propriedade e Selecionar Nenhum.
Selecione o controle ProductNameListBox.
Na janela de A propriedades, clique no Botão Direito da propriedade de De fonte de dados de e Selecionar ProductsBindingSource.
Clique no Botão Direito do DisplayMember propriedade e Selecionar ProductName.
Expandira DataBindings propriedade, clique no Botão Direito do SelectedValue propriedade e selecione Nenhum.
Adicionando um método para inserir dados em uma tabela
O Avançar tarefa é ler os dados dos controles Ligados e preencher uma tabela no seu documento do Word.Primeiro, crie um procedimento para formatar os títulos na tabela e, em seguida, Adicionar o método AddData para criar e formatar uma tabela do Word.
Para formatar os títulos de tabela
Na classe ActionsControl, Criar um método para formatar os títulos da tabela.
Shared Sub SetHeadings(ByVal tblCell As Word.Cell, ByVal text As String) With tblCell.Range .Text = text .Font.Bold = True .ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter End With End Sub
static void SetHeadings(Microsoft.Office.Interop.Word.Cell tblCell, string text) { tblCell.Range.Text = text; tblCell.Range.Font.Bold = 1; tblCell.Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter; }
Para criar a tabela
Na classe ActionsControl, Gravar um método que criará uma tabela se um ainda não existir e adicionar dados do painel de ações para a tabela.
Private Sub AddData(ByVal row As System.Data.DataRow, ByVal companyName As String) ' Create a table if it doesn't already exist. If Globals.ThisDocument.Tables.Count = 0 Then Try ' Create a table. Dim tbl As Word.Table = Globals.ThisDocument.Tables.Add( _ Globals.ThisDocument.Application.Selection.Range, 1, 4) ' Insert headings. SetHeadings(tbl.Cell(1, 1), "Company Name") SetHeadings(tbl.Cell(1, 2), "Product Name") SetHeadings(tbl.Cell(1, 3), "Quantity") SetHeadings(tbl.Cell(1, 4), "Unit Price") Catch ex As Exception MessageBox.Show("Problem creating Products table: " & ex.Message, _ "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End If ' Add data from data row to the table. Dim selection As Word.Selection = Globals.ThisDocument.Application.Selection If selection.Tables.Count > 0 Then Dim newRow As Word.Row = Globals.ThisDocument.Tables(1).Rows.Add() With newRow .Range.Font.Bold = False .Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft .Cells(4).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight .Cells(1).Range.Text = companyName .Cells(2).Range.Text = row.Item("ProductName").ToString .Cells(3).Range.Text = row.Item("QuantityPerUnit").ToString .Cells(4).Range.Text = Math.Round(row.Item("UnitPrice"), 2) End With Else MessageBox.Show("Cursor must be within a table.", _ "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub
private void AddData(System.Data.DataRow row, string companyName) { object missing = System.Type.Missing; // Create a table if it doesn't already exist. if (Globals.ThisDocument.Tables.Count == 0) { try { // Create a table. Microsoft.Office.Interop.Word.Table tbl = Globals.ThisDocument.Tables.Add (Globals.ThisDocument.Application.Selection.Range, 1, 4, ref missing, ref missing); // Insert headings. SetHeadings(tbl.Cell(1, 1), "Company Name"); SetHeadings(tbl.Cell(1, 2), "Product Name"); SetHeadings(tbl.Cell(1, 3), "Quantity"); SetHeadings(tbl.Cell(1, 4), "Unit Price"); } catch (Exception ex) { MessageBox.Show("Problem creating Products table: " + ex.Message, "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error); } } // Add data from data row to the table. Microsoft.Office.Interop.Word.Selection selection = Globals.ThisDocument.Application.Selection; if (selection.Tables.Count > 0) { Microsoft.Office.Interop.Word.Row newRow = Globals.ThisDocument.Tables[1].Rows.Add(ref missing); newRow.Range.Font.Bold = 0; newRow.Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft; newRow.Cells[4].Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight; newRow.Cells[1].Range.Text = companyName; newRow.Cells[2].Range.Text = row["ProductName"].ToString(); newRow.Cells[3].Range.Text = row["QuantityPerUnit"].ToString(); newRow.Cells[4].Range.Text = Math.Round(Convert.ToDouble(row["UnitPrice"])).ToString("#,##0.00"); } else { MessageBox.Show("Cursor must be within a table.", "Actions Pane", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
Para inserir texto em uma tabela do Word
Adicionar o código a seguir ao manipulador de eventos Click do botão de De inserir.
Private Sub Insert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Insert.Click Dim tbl As System.Data.DataTable = NorthwindDataSet.Products Dim rows() As System.Data.DataRow ' Check if a product is selected. If Not Me.ProductNameListBox.SelectedIndex < 0 Then Dim product As String = Me.ProductNameListBox.SelectedItem.Row.Item("ProductName") Dim company As String = Me.CompanyNameComboBox.Text ' Return the data row from the selected Product in the list box. rows = tbl.Select("[ProductName] = '" & product.Replace("'", "''") & "'") AddData(rows(0), company) Else MessageBox.Show("Please select a product.", "Actions Pane", MessageBoxButtons.OK) End If End Sub
private void Insert_Click(object sender, System.EventArgs e) { System.Data.DataTable tbl = northwindDataSet.Products; System.Data.DataRow[] rows; // Check if a product is selected. if (this.productNameListBox.SelectedIndex >= 0) { System.Data.DataRowView productRow = (System.Data.DataRowView)this.productNameListBox.SelectedItem; string product = productRow.Row["ProductName"].ToString(); string company = this.companyNameComboBox.Text; // Return the data row from the selected product. rows = tbl.Select("[ProductName] = '" + product.Replace("'", "''") + "'"); this.AddData(rows[0], company); } else { MessageBox.Show("Please select a product.", "Actions Pane", MessageBoxButtons.OK); } }
Em C#, você deve Criar um manipulador de eventos para o evento Click do botão.Você pode colocar esse código no manipulador de eventos da classe LoadActionsControl.
this.Insert.Click += new EventHandler(Insert_Click);
Mostrando o painel de ações
O painel de ações fica visível depois que controles são adicionados a ele.
Para mostrar o painel de ações
Em Gerenciador de Soluções, clique com o botão direito do mouse ThisDocument.vb ou ThisDocument.cse clique em Exibir Code no menu de atalho.
Criar uma Novo instância do Controlarar na parte superior do ThisDocument classe para que fique semelhante ao exemplo a seguir.
Dim actions As New ActionsControl
private ActionsControl actions = new ActionsControl();
Adicionar código ao manipulador de eventos de StartupThisDocument para que fique semelhante ao exemplo a seguir.
Me.ActionsPane.Controls.Add(actions)
this.ActionsPane.Controls.Add(actions);
Testando o aplicativo
Agora você pode testar seu documento para Verifique se o painel de ações é exibido quando o documento for aberto.Testar a relação mestre/detalhes nos controles no painel de ações e certifique-se de que dados são preenchidos em uma tabela do Word quando se clica no botão de inserir.
Para testar seu documento
Pressionarionar F5 para executar seu projeto.
Confirme se o painel de ações é visível.
Selecionar uma empresa na caixa de combinação e verificar se os itens em Produtos Caixa de Listagem alterar.
Selecionar um produto, clique em Inserir no painel de ações e verifique se os detalhes do produto foram adicionados à tabela no Word.
Inserir Produtos adicionais de várias empresas.
Próximas etapas
Esta explicação passo a passo mostra as noções básicas de ligação de dados a controles em um painel de ações no Word.Aqui estão algumas tarefas que podem vie em seguida:
Implantar o projeto.For more information, see Como: Implantar soluções do Office (sistema de 2003).
Ligação de dados a controles no Excel.For more information, see Demonstra Passo a passo: Vincular dados a controles em um painel de ações do Excel.
Mostrando e ocultando controles no painel de ações.For more information, see Demonstra Passo a passo: Alterar o painel de ações de acordo com para o contexto de usuário.
Consulte também
Tarefas
Como: Adicionar um painel de ações a documentos do Word