Ir para o conteúdo
cffm

[Resolvido] Datagridview não atualiza ao fechar form filho

Mensagens Recomendadas

cffm

Bom dia,

estou com um problema que não estou a conseguir resolver.

Tenho um form principal onde tenho uma série de datagrids e ao chamar um form filho quero inserir dados, fechar esse form e que o principal atualize.

//Form principal
//Chamo o form filho
private void tsm_carregar_para_BD_Click(object sender, EventArgse)
 {
Form_wizard_programas form_wizard = new Form_wizard_programas();
form_wizard.Show();
}

//Form filho
private void Form_wizard_programas_FormClosed(object sender, FormClosedEventArgse)
 {
form_principal.atualiza_datagrids();		
 }

O interessante é que se mostrar uma messagebox depois do form_principal.atualiza_datagrids() ele mostra a mensagem, no entanto este método corre (já testei no passo a passo), mas não atualiza.

Se puderem ajudar agradeço.

Obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
cffm

Basicamente esta função faz uma query á BD e atualiza vários datagridview que tenho no form principal.

O que acho estranho é que se correr a função no form principal, tudo corre normalmente, mas no form filho não atualiza apesar de no step debug os valores serem alterados, mas depois não são mostrados.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bordonhos

Boas.

Acho que estás a baralhar as instâncias onde estás a trabalhar. Será que a função actualiza_datagrids() que chamas, é relativa à instancia da classe de onde chamaste o form filho?

Eu faria da seguinte maneira: usava um showdialog() em vez do show(), e a colocar o teu código de actualzação das grids a seguir ao showdialog(). Este processo vai-te impedir de acederes ao teu form pai enquanto tens o filho aberto, não sei se é um requisito importante...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
cffm

Só que eu tenho de usar o Show() porque preciso de aceder aos dois forms simultaneamente. Se fizer o showdialog e chamar o método depois funciona perfeitamente, mas queria ter acesso aos dois forms.

A função actualiza_datagrids() é do form principal, no entanto estou a chamá-la no form filho.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunobola

Tenta usar Application.DoEvents();

Sempre que pretendes forçar a interface a efetuar o reload dos controlos, por exemplo pra actualizar grids após inserção de registos ou etc, caso elas não façam os eventos implicitamente.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
cffm

Já resolvi o problema, muito obrigado a todos pela ajuda.

O que fiz foi passar o form pai ao chamar o filho Form_wizard_programas form_wizard = new Form_wizard_programas(this);

//Form principal
//Chamo o form filho
private void tsm_carregar_para_BD_Click(object sender, EventArgse)
	 {
		 Form_wizard_programas form_wizard = new Form_wizard_programas(this);
		 form_wizard.Show();
 }

Mais uma vez obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.