cffm Posted September 8, 2013 at 11:28 AM Report #523816 Posted September 8, 2013 at 11:28 AM 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!
nelsonr Posted September 8, 2013 at 02:26 PM Report #523828 Posted September 8, 2013 at 02:26 PM Boas, e o que é que essa função actualiza_datagrids faz especificamente?
cffm Posted September 8, 2013 at 11:39 PM Author Report #523870 Posted September 8, 2013 at 11:39 PM 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.
bordonhos Posted September 9, 2013 at 12:14 PM Report #523909 Posted September 9, 2013 at 12:14 PM 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...
cffm Posted September 9, 2013 at 12:21 PM Author Report #523911 Posted September 9, 2013 at 12:21 PM 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.
bordonhos Posted September 9, 2013 at 01:27 PM Report #523917 Posted September 9, 2013 at 01:27 PM O teu problema está mesmo na instância. Se puderes mostra o código que usas para instanciar a variavel form_principal.
brunobola Posted September 9, 2013 at 11:33 PM Report #523946 Posted September 9, 2013 at 11:33 PM 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.
cffm Posted September 9, 2013 at 11:50 PM Author Report #523952 Posted September 9, 2013 at 11:50 PM 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!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now