Share via


Criar um controle de usuário do Windows Forms no .NET Framework que dê suporte à associação de dados de consulta

Observação

Os conjuntos de dados 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. Eles são bastante úteis em aplicativos que permitem que os usuários modifiquem dados e persistam as alterações no banco de dados. Embora os conjuntos de dados tenham se mostrado uma tecnologia muito bem-sucedida, é recomendado que os novos aplicativos .NET usem o Entity Framework Core. O Entity Framework proporciona uma forma mais natural de trabalhar com dados tabulares como modelos de objeto e conta com uma interface de programação mais simples.

Ao exibir dados no Windows Forms, você poderá escolher os controles existentes da Caixa de Ferramentas ou criar controles personalizados se o aplicativo exigir alguma funcionalidade que não esteja 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 contêm três propriedade que podem ser associadas a dados. Tais controles são semelhantes a um ComboBox.

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

Ao criar controles para uso em cenários de associação de dados, é necessário implementar um dos seguintes atributos de associação de dados:

Uso do atributo de associação de dados
Implemente o DefaultBindingPropertyAttribute em controles simples, como um TextBox, que exibe uma única coluna (ou propriedade) de dados. Para obter mais informações, confira Criar um controle de usuário do Windows Forms que dá suporte à associação de dados simples.
Implemente o ComplexBindingPropertiesAttribute nos controles, como um DataGridView que exibe listas (ou tabelas) de dados. Para obter mais informações, confira Criar um controle de usuário do Windows Forms que dá suporte à associação de dados complexa.
Implemente o LookupBindingPropertiesAttribute nos controles, como um ComboBoxque exibe listas (ou tabelas) de dados, mas também precisa apresentar uma única coluna ou propriedade. (Esse processo é descrito nesta página de passo a passo.)

Este passo a passo cria um controle de pesquisa que se associa aos dados de duas tabelas. Este exemplo usa as tabelas Customers e Orders do banco de dados de exemplo Northwind. O controle de pesquisa é associado ao campo CustomerID da tabela Orders. Ele usa este valor para pesquisar CompanyName na tabela Customers.

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

  • Crie um novo Aplicativo do Windows Forms (.NET Framework).

  • Adicionar um novo Controle de Usuário ao projeto.

  • Projetar visualmente o controle do usuário.

  • Implementar o atributo LookupBindingProperty.

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

  • Definir a coluna CustomerID na tabela Pedidos na janela Fontes de Dados para usar o novo controle.

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

Pré-requisitos

Para concluir este passo a passo, você precisa das cargas de trabalho de Desenvolvimento de área de trabalho do .NET e Armazenamento de dados e processamento instaladas no Visual Studio. Para instalá-las, abra Instalador do Visual Studio e escolha Modificar (ou Mais>Modificar) ao lado da versão do Visual Studio que você deseja modificar. Confira Modificar o Visual Studio.

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

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

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

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

      Uma janela do editor de consultas vai se abrir.

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

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

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

Criar um projeto de aplicativo do Windows Forms

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

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

  2. Expanda Visual C# ou Visual Basic no painel esquerdo e selecione Área de Trabalho do Windows.

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

  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 controle de pesquisa de um Controle de Usuário, portanto, adicione um item de Controle de Usuário ao projeto LookupControlWalkthrough.

  1. No menu Projeto, selecione Adicionar Controle do Usuário.

  2. Digite LookupBox na área Nome e clique em Adicionar.

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

Projetar o controle LookupBox

Para projetar o controle LookupBox, arraste um ComboBox da Caixa de Ferramentas para a superfície de design do controle de usuário.

Adicionar o atributo obrigatório de associação de dados

Para controles de pesquisa que suportam associação de dados, você pode implementar o LookupBindingPropertiesAttribute.

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

  2. Substitua o código no LookupBox pelo 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 Compilação, escolha Compilar Solução.

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

Esta etapa cria uma fonte de dados usando o Assistente de Configuração de Fonte de Dados com base nas tabelas Customers e Orders no 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 de Fonte de Dados.

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

  4. Na página Escolha a Conexão de Dados, faça o seguinte:

    • 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 inicializar 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, em seguida, clique em Avançar.

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

  7. Expanda o nó Tabelas na página Escolher Objetos do Banco de Dados.

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

    O NorthwindDataSet é adicionado ao projeto e as tabelas Customers e Orders aparecem na janela Fontes de Dados.

Definir a coluna CustomerID da tabela Pedidos para usar o controle LookupBox

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

  1. Abra Form1 no designer.

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

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

  4. Clique na seta suspensa no nó Pedidos e escolha Detalhes na lista de controle.

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

  6. Selecione 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

É possível criar controles de associação de dados ao arrastar itens da janela Fontes de Dados para Form1.

Para criar controles de associação de dados no Windows Form, arraste o nó Pedidos da janela Fonte de Dados para o Windows Form e verifique se o controle LookupBox é usado para exibir dados na coluna CustomerID.

Associar o controle para pesquisar CompanyName na tabela Clientes

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

Isso configura a associação de dados para exibir o CompanyName da tabela Customers mantendo, ao mesmo tempo, o valor CustomerID da tabela Orders.

Executar o aplicativo

  • Pressione F5 para executar o aplicativo.

  • Navegue por alguns registros e verifique se CompanyName aparece no controle LookupBox.