Partilhar via


Passar dados entre formulários

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.

Este tutorial fornece instruções passo a passo para passar dados de um formulário para outro. Usando as tabelas Clientes e Pedidos do banco de dados de exemplo Northwind, um formulário permite que os usuários selecionem um cliente e um segundo formulário exibe os pedidos do cliente selecionado. Este tutorial mostra como criar um método no segundo formulário que recebe dados do primeiro formulário.

Neste tutorial, você conclui as seguintes tarefas:

  • Crie um novo projeto do Aplicativo Windows Forms (.NET Framework ).
  • Crie e configure um conjunto de dados usando o Assistente de Configuração da Fonte de Dados.
  • Selecione o controle a ser criado no formulário quando você arrasta itens da janela Fontes de Dados . Para obter mais informações, consulte Definir o controle a ser criado ao arrastar da janela Fontes de dados.
  • Crie um controle associado a dados arrastando itens da janela Fontes de Dados para um formulário.
  • Crie um segundo formulário com uma grade que exiba dados.
  • Crie uma TableAdapter consulta para buscar pedidos para um cliente específico.
  • Passe dados entre formulários.

Observação

Este tutorial demonstra apenas uma maneira de passar dados entre formulários. Há outras opções para passar dados para um formulário, como criar um segundo construtor para receber dados ou criar uma propriedade pública que pode ser definida com dados do primeiro formulário.

Pré-requisitos

  • O desenvolvimento da área de trabalho .NET e as cargas de trabalho de armazenamento e processamento de dados instaladas no Visual Studio. Para instalá-los, abra o Visual Studio Installer e escolha Modificar, ou Mais>Modificar, ao lado da versão do Visual Studio que você deseja usar. Para obter mais informações, consulte Modificar o Visual Studio.

  • SQL Server Express 2019 LocalDB instalado a partir da página de downloads do SQL Server ou por meio do Visual Studio Installer como parte da carga de trabalho de processamento e armazenamento de dados.

  • O banco de dados de exemplo Northwind, criado seguindo estas etapas:

    1. No Visual Studio, abra a janela do Pesquisador de Objetos do SQL Server selecionando-a no menu Exibir . O Pesquisador de Objetos do SQL Server é instalado como parte da carga de trabalho de armazenamento e processamento de dados .

    2. Expanda o nó SQL Server, clique com o botão direito do mouse sobre a sua instância LocalDB e selecione Nova Consulta para abrir a janela do editor de consultas.

    3. Copie o script Northwind Transact-SQL para a área de transferência. Esse script T-SQL cria o banco de dados Northwind e o preenche com dados.

    4. Cole o script T-SQL no editor de consultas e selecione Executar na parte superior da janela para criar o banco de dados Northwind.

Criar o projeto do aplicativo Windows Forms

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

  2. Selecione C# ou Visual Basic na lista suspensa Todos os idiomas , Windows na lista suspensa Todas as plataformas e Desktop na lista Todos os tipos de projeto .

  3. Selecione Aplicativo Windows Forms (.NET Framework) na lista de modelos de projeto e selecione Avançar.

  4. Nomeie o projeto PassingDataBetweenForms, selecione Next e, em seguida, selecione Create.

O projeto PassingDataBetweenForms é criado e adicionado ao Gerenciador de Soluções. O editor mostra a vista de designer do Form1.

Criar a fonte de dados

  1. Abra a janela Fontes de Dados selecionando Projeto>Adicionar Nova Fonte de Dados no menu Visual Studio.

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

  3. Na página Escolha um Tipo de Fonte de Dados , selecione Banco de Dados e selecione Avançar.

  4. Na página Escolha um Modelo de Banco de Dados , verifique se o Conjunto de Dados está especificado e selecione Avançar.

  5. Na página Choose Your Data Connection , se uma conexão de dados com o banco de dados de exemplo Northwind já estiver disponível, selecione-a e prossiga para a etapa Choose your Database Objects . Caso contrário, selecione Nova conexão.

  6. Na tela Escolher Fonte de Dados , selecione Arquivo de Banco de Dados do Microsoft SQL Server e selecione Continuar.

  7. Na tela Adicionar conexão , selecione Procurar, procure e selecione o arquivo northwnd.mdf e selecione Abrir.

  8. Selecione Autenticação do Windows ou Autenticação do SQL Server e forneça um nome de usuário e senha para acessar o banco de dados.

  9. Selecione Testar conexão para testar a conexão. Quando a conexão for bem-sucedida, selecione OK.

  10. Na página Escolha sua conexão de dados , confirme se o arquivo de banco de dados aparece e selecione Avançar.

  11. Selecione Não para a pergunta pop-up Gostaria de copiar o arquivo para o seu projeto e modificar a conexão?

  12. Na página Salvar a Cadeia de Conexão no arquivo de Configuração do Aplicativo , selecione Sim. Nomeie a conexão NorthwindConnectionString e selecione Avançar.

  13. Na página Escolha seus Objetos de Banco de Dados , expanda o nó Tabelas , selecione as tabelas Clientes e Pedidos , nomeie o conjunto de dados NorthwindDataSet e selecione Concluir.

O NorthwindDataSet é adicionado ao seu projeto e as tabelas Clientes e Pedidos aparecem na janela Fontes de Dados .

Preencher o primeiro formulário

Criar o segundo formulário

Crie um segundo formulário para passar dados.

  1. No menu Projeto, escolha Adicionar formulário (Windows Forms).

  2. Deixe o nome padrão do Form2 e selecione Adicionar.

  3. Arraste o Pedidos nó principal da janela Fontes de Dados para o Form2.

    A DataGridView e uma faixa de ferramentas BindingNavigator para navegar em registos aparece no Form2. Os componentes NorthwindDataSet, CustomersTableAdapter, BindingSource, e BindingNavigator aparecem na bandeja.

  4. Exclua o OrdersBindingNavigator da bandeja do componente. O BindingNavigator desaparece do Form2.

Adicionar uma consulta TableAdapter

Adicione uma TableAdapter consulta ao Form2 que carrega pedidos para o cliente selecionado no Form1.

  1. Clique duas vezes no arquivo NorthwindDataSet.xsd no Gerenciador de Soluções.

  2. Clique com o botão direito do mouse em OrdersTableAdapter na tabela Pedidos e selecione Adicionar>consulta.

  3. Deixe a opção padrão de Usar instruções SQL e selecione Avançar.

  4. Deixe a opção padrão de SELECT que retorna linhas e selecione Next.

  5. Em Quais dados a tabela deve carregar, para retornar Orders com base no CustomerID, adicione uma WHERE cláusula ao final da consulta. A consulta final deve ser semelhante ao seguinte código:

    SELECT OrderID, CustomerID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry
    FROM Orders
    WHERE CustomerID = @CustomerID
    

    Observação

    Use a sintaxe de parâmetro correta para seu banco de dados. Por exemplo, no Microsoft Access, a cláusula seria semelhante a WHEREWHERE CustomerID = ?.

  6. Selecione Avançar.

  7. Na tela Choose Methods to Generate (Escolher métodos para gerar ), selecione Fill a DataTable e insira FillByCustomerID.

  8. Desmarque a opção Retornar uma DataTable e selecione Concluir.

Crie um método no Form2 para passar dados para

  1. Clique com o botão direito do mouse no Form2 e selecione View Code para abrir o código do Form2 no editor.

  2. No código Form2, remova o conteúdo do método Form2_Load e adicione o seguinte código após o método Form2_Load.

internal void LoadOrders(String CustomerID)
{
    ordersTableAdapter.FillByCustomerID(northwindDataSet.Orders, CustomerID);
}

Crie um método no Form1 para passar dados e exibir o Form2

  1. No modo de exibição Designer do Form1, clique com o botão direito do mouse na grade de dados do cliente e selecione Propriedades.

  2. Na janela Propriedades , selecione o ícone Eventos na barra de ferramentas superior.

  3. Clique duas vezes no evento DoubleClick para abrir o editor de códigos.

  4. No editor de códigos, atualize a definição de método para corresponder ao seguinte exemplo:

private void customersDataGridView_DoubleClick(object sender, EventArgs e)
{
    System.Data.DataRowView SelectedRowView;
    NorthwindDataSet.CustomersRow SelectedRow;

    SelectedRowView = (System.Data.DataRowView)customersBindingSource.Current;
    SelectedRow = (NorthwindDataSet.CustomersRow)SelectedRowView.Row;

    Form2 OrdersForm = new Form2();
    OrdersForm.LoadOrders(SelectedRow.CustomerID);
    OrdersForm.Show();
}

Executar e testar o aplicativo

  1. Pressione F5 para executar o aplicativo.

  2. No aplicativo, clique duas vezes em um registro de cliente no Form1 para abrir o Form2 com os pedidos desse cliente.

Próximos passos

Dependendo dos requisitos do seu aplicativo, você pode executar várias etapas depois de passar dados entre formulários. Alguns aprimoramentos que você pode fazer neste tutorial incluem: