Vincular controles do Windows Forms a dados em aplicativos do .NET Framework

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.

É possível exibir dados para usuários do aplicativo com a associação de dados ao Windows Forms. Para criar esses controles associados a dados, arraste itens da janela Fontes de Dados para o Designer de Formulários do Windows no Visual Studio.

Data Source drag operation

Dica

Se a janela Fontes de Dados não estiver visível, você pode abri-la escolhendo Exibir>Outras Janelas>Fontes de Dados ou pressionando Shift+Alt+D. Você deve ter um projeto aberto no Visual Studio para ver a janela Fontes de Dados.

Antes de arrastar os itens, você pode definir o tipo de controle ao qual deseja associá-los. Valores diferentes serão exibidos caso você escolha a própria tabela ou uma coluna individual. Você também pode definir valores personalizados. Em uma tabela, Detalhes significa que cada coluna está associada a um controle separado.

Bind data source to DataGridView

Controles BindingSource e BindingNavigator

O componente BindingSource serve a duas finalidades. Em primeiro lugar, ele fornece uma camada de abstração ao associar os controles a dados. Os controles no formulário são associados ao componente BindingSource em vez de diretamente a uma fonte de dados. Em segundo lugar, ele pode gerenciar uma coleção de objetos. Adicionar um tipo ao BindingSource cria uma lista desse tipo.

Para obter mais informações sobre o componente BindingSource, confira:

O controle BindingNavigator fornece uma interface do usuário para navegar por dados exibidos por um aplicativo do Windows.

Associar a dados em um controle DataGridView

Para um controle DataGridView, tabela inteira está associada a esse controle único. ao arrastar um DataGridView para o formulário, também é exibida uma faixa de ferramentas para navegar nos registros (BindingNavigator). Um DataSet, TableAdapter, BindingSource e BindingNavigator são exibidos na bandeja de componentes. Na ilustração a seguir, um TableAdapterManager também é adicionado porque a tabela Customers tem uma relação com a tabela Orders. Todas essas variáveis são declaradas no código gerado automaticamente como membros privados na classe de formulário. O código gerado automaticamente para preencher o DataGridView está localizado no manipulador de eventos Form_Load. O código para salvar os dados para atualizar o banco de dados está localizado no Save manipulador de eventos do BindingNavigator. Você pode mover ou modificar esse código conforme necessário.

GridView with BindingNavigator

Você pode personalizar o comportamento do DataGridView e do BindingNavigator clicando na marca inteligente no canto superior direito de cada um deles:

DataGridView and Binding Navigator smart tags

Se os controles de que seu aplicativo precisa não estiverem disponíveis na janela Fontes de Dados, você poderá adicioná-los. Para obter mais informações, confira Adicionar controles personalizados à janela Fontes de Dados.

Você também pode arrastar itens da janela Fontes de Dados aos controles que já estão em um formulário para associar o controle aos dados. Um controle que já está associado aos dados tem suas associações de dados redefinidas para o item mais recente que foi arrastado para ele. Para serem destinos de soltar válidos, os controles devem ser capazes de exibir o tipo de dados subjacente do item arrastado para ele a partir da janela Fontes de Dados. Por exemplo, não é válido arrastar um item que tenha um tipo de dados de DateTime para um CheckBox, porque CheckBox não é capaz de exibir uma data.

Associar a dados em controles individuais

Quando você associa uma fonte de dados a Detalhes, cada coluna no conjunto de dados é associada a um controle separado.

Bind data source to details

Importante

Observe que, na ilustração anterior, você arrasta da propriedade Orders da tabela Customers, e não da tabela Orders. Ao associar à propriedade Customer.Orders, os comandos de navegação feitos no DataGridView são refletidos imediatamente nos controles de detalhes. Se você arrastasse a partir da tabela Orders, os controles ainda estariam associados ao conjunto de dados, mas não seriam sincronizados com o DataGridView.

A ilustração a seguir mostra os controles padrão associados a dados que são adicionados ao formulário depois que a propriedade Orders na tabela Customers é associada a Detalhes na janela Fontes de Dados.

Orders table bound to details

Observe também que cada controle tem uma marca inteligente. Essa marca permite personalizações que se aplicam somente a esse controle.