Atualizar form pai quando fechar o form filho c#

19 respostas
M

Olá, pessoal estou iniciando com c# e estou com essa duvida.

Tenho o form principal que chama o segundo form que seria de cadastro de compromissos, quando alterasse ou excluisse alguma informação e fechar o form de cadastro gostaria qua atualizasse o form pai com as informações atuais.

Obrigado!

19 Respostas

L

O seu form pai é um MDI ?
Você pode fazer assim, criar um construtor para o form filho que receba como parâmetro um form, quando for instanciar o form filho passe como parâmetro o form pai e no evento de fechamento do form filho (FormClosing ou FormClosed) faça as alterações com o form pai que foi o form que você passou no construtor.
Entendeu?

M

olá, Lucas_Soares eu estou começando agora e não tenho muito conhecimento na linguagem.

Voce tem algum codigo para me mostrar, por favor!

Obrigado!

L

Claro, vamos lá.
Vai demorar um pouquinho, mas vai dar certo!
Espera um pouco que eu estou fazendo um teste.

M

Ok, agradeço pela ajuda.

L

Pronto, declara uma variável de referência a um objeto da classe Form na classe FormFilho, cria um novo construtor no form filho com parâmetro do tipo Form.
Segue código:

private Form f;

public FormFilho(Form f)
{
   InitializeComponent();
   this.f = f;
}

Preste atenção, isso deve ser feito na classe FormFilho.
Agora vamos alterar o evento de clique do botão que chama o FormFilho.
Instancie um objeto da classe FormFilho passando como parâmatro uma
referencia ao FormPai, nesse caso é o operador this, quando nós queremos
referenciar a o próprio objeto no código da classe usamos o operador this,
isso significa que quando o objeto FormPai executar o método button_Click(),
lá dentro ele vai chamar o construtor de FormFilho passando como parâmetro a si mesmo.

private void button1_Click(object sender, EventArgs e)
{
   FormFilho f = new FormFilho(this);
   f.Show();
   this.Text = "Eu sou o FormPai";
}

Agora no evento de fechamento do objeto FormFilho FormClosed()
você faz a alteração no FormPai.
Perceba:

private void FormFilho_FormClosed(object sender, FormClosedEventArgs e)
{
    f.Text = "O FormFilho foi fechado.";
}

Aqui eu estou alterando o título da janela quando a tela de cadastro de compromissos no seu caso for fechada.

M

lucas, não consegui, pois o botão que chama o form filho está em um user control, por isso acho que não estou conseguindo fazer

L

murilo_oliveira2 posta ai qual é o problema que da.
Você está usando o Visual Studio?

M

Então lucas vou explicar detalhadamente.
estou fazendo uma agenda eletronica para uma empresa de estetica. nele tem 8 colunas e 27 linhas onde em cada linha tem um user control que é onde vai aparecer o dia agendado e o nome do cliente, nesse user control
tem um botão inserir que é aonde vai chamar a tela para inserir os dados da reserva da sala.
quando o operador termina de fazer a inserção ele ira fechar essa tela e eu quero que atualize as label que estão no user control da tela principal, mais não atualiza de forma alguma ja tentei de varias formas.

Obrigado!

L

São apenas um botão inserir para todas as vinte e sete linhas ou um botão inserir para cada linha?
São vinte e sete user control, um para cada linha, ou um user control divido em vinte e sete pedaços?

M

è um botão inserir para todos, e é um user control para cada linha

L

Você criou uma lógica para identificar qual user control deve ser atualizado?

M

sim fiz de acordo com o horario e a sala ele preenche o user control usando o dataset.

L

Você está debugando o projeto?
Posta a linha que ele lança a exceção.
Qual é a mensagem da exceção?

M

Debuguei o projeto ele não da erro algum so não atualiza.

L

Me corrija se eu estiver errado.
Você está usando DataSet, então provavelmente o problema está no DataSet, se os user control são alimentados do DataSet talvez você tenha que
chamar algum método para atualizar o DataSet, não tenho sugestão de código pois ainda não trabalhei com DataSet, só conectado.

M

Então lucas eu fiz um teste da forma que voce falou e realmente funciona, mais não funciona com o user control.

esse é o teste que eu fiz e funciona

este é o form filho eu coloquei um botão no form pai e não utilizei o botão do user control e funcionou mais eu precisava usar o do user control como posso fazer ?
Form1 frm;

public frmCompromisso(Form1 frm1)
    {
        InitializeComponent();

        frm = frm1;
       
        
        
    }
private void btnFechar_Click(object sender, EventArgs e)

{

lblData.Text = “12/06/2012 00:00:00”;

frm.populagrid(DateTime.Parse(lblData.Text));
}
L

Cara entra no site MSDN é o maior forúm de desenvolvedores .NET do mundo, é da própria Microsoft.
Valeu.

M

Olá galera, estou precisando converter um codigo vb para o c# mais estou tendo muitos problemas, já tentei converter pelos sites mais o mesmo não converte corretamente.
O codigo é este:

Shared Function crypt(ByVal texto As String) As String

Dim conta, posicao, gerado, A

conta = Len(texto)

posicao = 1

gerado = ""

A = 3

Do While posicao <= conta

gerado = gerado & Format((Val(Asc(Mid(texto, posicao, 1)) + A)), 000)

posicao = posicao + 1

If A = 8 Then

A = 3

GoTo pula

End If

If A = 2 Then

A = 8

GoTo pula

End If

If A = 5 Then

A = 2

GoTo pula

End If

If A = 7 Then

A = 5

GoTo pula

End If

If A = 6 Then

A = 7

GoTo pula

End If

If A = 3 Then

A = 6

GoTo pula

End If

pula:

Loop

crypt = gerado

End Function

e estou com problema principalmente nesta parte:

gerado = gerado & Format((Val(Asc(Mid(texto, posicao, 1)) + A)), “000”)

Se alguem puder me ajugar fico grato.

Obrigado!

D

Como eu faria isso no Cadastro de produto para trazer o Fornecedor de outra janela ?

Alguém poderia me ajudar ?

Criado 12 de junho de 2012
Ultima resposta 24 de mar. de 2015
Respostas 19
Participantes 3