Jump to content

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


Recommended Posts

Posted

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!

Posted

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.

Posted

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

Posted

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.

Posted

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.

Posted

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!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.