Partilhar via


Criar um controle de usuário do Windows Forms do .NET Framework que ofereça suporte à vinculação de dados de pesquisa

Observação

A DataSet classe e as classes relacionadas são tecnologias herdadas do .NET Framework do início dos anos 2000 que permitem que os aplicativos trabalhem com dados na memória enquanto os aplicativos estão desconectados do banco de dados. As tecnologias são especialmente úteis para aplicativos que permitem aos usuários modificar dados e manter as alterações de volta ao banco de dados. Embora os conjuntos de dados sejam uma tecnologia comprovadamente bem-sucedida, a abordagem recomendada para novos aplicativos .NET é usar o Entity Framework Core. O Entity Framework fornece uma maneira mais natural de trabalhar com dados tabulares como modelos de objeto e tem uma interface de programação mais simples.

Ao exibir dados no Windows Forms, você pode escolher controles existentes na Caixa de Ferramentas ou criar controles personalizados se seu aplicativo exigir funcionalidade não disponível nos controles padrão. Este passo a passo mostra como criar um controle que implementa o LookupBindingPropertiesAttribute. Os controles que implementam o LookupBindingPropertiesAttribute podem conter três propriedades que podem ser vinculadas aos dados. Esses controlos são semelhantes a um ComboBox.

Para obter mais informações sobre a criação de controles, consulte Desenvolvendo controles do Windows Forms em tempo de design.

Ao criar controles para uso em cenários de vinculação de dados, você precisa implementar um dos seguintes atributos de vinculação de dados:

Uso de atributos de vinculação de dados
Implemente o DefaultBindingPropertyAttribute em controlos simples, como um TextBox, que exibe uma única coluna (ou propriedade) de dados. Para obter mais informações, consulte Criar um controle de usuário do Windows Forms que ofereça suporte à vinculação de dados simples.
Implemente o ComplexBindingPropertiesAttribute em controlos, como um DataGridView, que mostrem listas (ou tabelas) de dados. Para obter mais informações, consulte Criar um controle de usuário do Windows Forms que ofereça suporte à vinculação de dados complexa.
Implemente o LookupBindingPropertiesAttribute nos controlos, como um ComboBox, que exibem listas (ou tabelas) de dados, mas também precisam apresentar uma única coluna ou propriedade. (Este processo é descrito nesta página passo a passo.)

Este passo a passo cria um controle de pesquisa que se liga a dados de duas tabelas. Este exemplo usa as tabelas Customers e Orders do banco de dados de exemplo Northwind. O controle de pesquisa está vinculado ao CustomerID campo da Orders tabela. Ele usa este valor para procurar CompanyName na tabela Customers.

Durante este passo a passo, você aprenderá a:

  • Crie um novo aplicativo Windows Forms (.NET Framework).

  • Adicione um novo Controle de Usuário ao seu projeto.

  • Projete visualmente o controle de usuário.

  • Implemente o LookupBindingProperty atributo.

  • Crie um conjunto de dados com o assistente Configuração da Fonte de Dados .

  • Defina a coluna CustomerID na tabela Orders , na janela Data Sources , para usar o novo controle.

  • Crie um formulário para exibir dados no novo controle.

Pré-requisitos

Para concluir este tutorial, você precisa do desenvolvimento da área de trabalho .NET e das cargas de trabalho de armazenamento e processamento de dados instaladas no Visual Studio. Para instalá-los, abra Visual Studio Installer e escolha Modificar (ou Mais>Modificar) ao lado da versão do Visual Studio que você deseja modificar. Consulte Modificar o Visual Studio.

Este passo a passo usa o SQL Server Express LocalDB e o banco de dados de exemplo Northwind.

  1. Se você não tiver o SQL Server Express LocalDB, instale-o na página de download do SQL Server Express ou por meio do Visual Studio Installer. No Visual Studio Installer, você pode instalar o SQL Server Express LocalDB como parte do Armazenamento e processamento de dados carga de trabalho ou como um componente individual.

  2. Instale o banco de dados de exemplo Northwind seguindo estas etapas:

    1. No Visual Studio, abra a janela do Pesquisador de Objetos do SQL Server. (O Pesquisador de Objetos do SQL Server é instalado como parte da carga de trabalho de armazenamento e processamento de dados no Visual Studio Installer.) Expanda o nó SQL Server. Clique com o botão direito do mouse em sua instância LocalDB e selecione New Query.

      Uma janela do editor de consultas é aberta.

    2. Copie o script Northwind Transact-SQL para a área de transferência. Este script T-SQL cria o banco de dados Northwind do zero e o preenche com dados.

    3. Cole o script T-SQL no editor de consultas e depois escolha o botão Executar.

      Após um curto período de tempo, a consulta termina de ser executada e o banco de dados Northwind é criado.

Criar um projeto de aplicativo do Windows Forms

A primeira etapa é criar um projeto do Windows Forms App (.NET Framework).

  1. No Visual Studio, no menu Ficheiro, selecione Novo>Projeto.

  2. Expanda Visual C# ou Visual Basic no painel esquerdo e, em seguida, selecione Windows Desktop.

  3. No painel central, selecione o tipo de projeto Windows Forms App .

  4. Nomeie o projeto LookupControlWalkthrough e escolha OK.

    O projeto LookupControlWalkthrough é criado e adicionado ao Gerenciador de Soluções.

Adicionar um controle de usuário ao projeto

Este passo a passo cria um controlo de pesquisa a partir de um Controlo de Utilizador, por isso adicione um Controlo de Utilizador ao projeto LookupControlWalkthrough.

  1. No menu Projeto , selecione Adicionar controle de usuário.

  2. Digite LookupBox na área Nome e selecione Adicionar.

    O controle LookupBox é adicionado ao Gerenciador de Soluções e é aberto no designer.

Projetar o controle LookupBox

Para projetar o controlo LookupBox, arraste um ComboBox da Caixa de Ferramentas para a superfície de design do controlo de utilizador.

Adicionar o atributo de vinculação de dados necessário

Para controles de pesquisa que oferecem suporte à vinculação de dados, você pode implementar o LookupBindingPropertiesAttribute.

  1. Alterne o controle LookupBox para a visualização de código. (No menu Exibir , escolha Código.)

  2. Substitua o código no LookupBox por o seguinte:

    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")]
        public partial class LookupBox : UserControl
        {
            public object DataSource
            {
                get{ return comboBox1.DataSource; }
                set{ comboBox1.DataSource = value; }
            }
    
            public string DisplayMember
            {
                get{ return comboBox1.DisplayMember; }
                set{ comboBox1.DisplayMember = value; }
            }
    
            public string ValueMember
            {
                get{ return comboBox1.ValueMember; }
                set{ comboBox1.ValueMember = value; }
            }
    
            public string LookupMember
            {
                get{ return comboBox1.SelectedValue.ToString(); }
                set{ comboBox1.SelectedValue = value; }
            }
    
    
            public LookupBox()
            {
                InitializeComponent();
            }
        }
    }
    
  3. No menu Build , escolha Build Solution.

Criar uma fonte de dados a partir do seu banco de dados

Esta etapa cria uma fonte de dados usando o assistente Configuração da Fonte de Dados, com base nas tabelas Customers e Orders do banco de dados de exemplo Northwind.

  1. Para abrir a janela Fontes de Dados , no menu Dados , clique em Mostrar Fontes de Dados.

  2. Na janela Fontes de Dados , selecione Adicionar Nova Fonte de Dados para iniciar o assistente de Configuração da Fonte de Dados .

  3. Selecione Banco de Dados na página Escolha um Tipo de Fonte de Dados e, em seguida, selecione Avançar.

  4. Na página Escolha sua Conexão de Dados , siga um destes procedimentos:

    • Se uma conexão de dados com o banco de dados de exemplo Northwind estiver disponível na lista suspensa, selecione-a.

    • Selecione Nova Conexão para iniciar a caixa de diálogo Adicionar/Modificar Conexão .

  5. Se o banco de dados exigir uma senha, selecione a opção para incluir dados confidenciais e selecione Avançar.

  6. Na página Salvar cadeia de conexão no arquivo de configuração do aplicativo , clique em Avançar.

  7. Na página Escolha os Objetos de Base de Dados, expanda o nó Tabelas.

  8. Selecione as Customers tabelas e Orders e, em seguida, selecione Concluir.

    O NorthwindDataSet é adicionado ao seu projeto e as Customers tabelas e Orders aparecem na janela Data Sources .

Defina a coluna CustomerID da tabela Orders para usar o controle LookupBox

Na janela Fontes de Dados , você pode definir o controle a ser criado antes de arrastar itens para o formulário.

  1. Abra o Formulário1 no designer.

  2. Expanda o nó Clientes na janela Fontes de Dados.

  3. Expanda o nó Pedidos (que está no nó Clientes abaixo da coluna Fax).

  4. Clique na seta da lista suspensa no nó Pedidos e escolha Detalhes na lista de opções.

  5. Clique na seta da lista suspensa na coluna CustomerID (no nó Encomendas) e escolha Personalizar.

  6. Selecione a LookupBox na lista de Controles Associados na caixa de diálogo Opções de Personalização da Interface do Usuário de Dados .

  7. Clique em OK.

  8. Clique na seta da lista suspensa na coluna CustomerID e escolha LookupBox.

Adicionar controles ao formulário

Você pode criar os controles associados a dados arrastando itens da janela Fontes de Dados para o Form1.

Para criar controles ligados a dados no Windows Form, arraste o nó Pedidos da janela Fontes de Dados para o Windows Form e verifique se o controle LookupBox é usado para exibir os dados na CustomerID coluna.

Vincular o controle para procurar CompanyName na tabela Customers

Para configurar as associações de pesquisa, selecione o nó principal Clientes na janela Fontes de Dados e arraste-o para a caixa de combinação no CustomerIDLookupBox no Form1.

Isso define a associação de dados para exibir o CompanyName na tabela Customers, mantendo o valor CustomerID da tabela Orders.

Execute o aplicativo

  • Pressione F5 para executar o aplicativo.

  • Navegue por alguns registos e verifique se o CompanyName aparece no controlo LookupBox.