Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

m3oliveira

[Resolvido] Troca de dados entre forms

Recommended Posts

Bom dia!

 

Tenho um pequeno formulário de consultas, onde preciso informar paciente e médico. Para selecionar o paciente e o médico, criei um botão de pesquisa

que chama um outro formulário, onde neste eu escolheria o paciente/medico e retornaria essas informações para o TextBox no meu form de Consulta. Poderia fazer com uma combobox, seria bem mais facil pra mim, porém, se houver muitos pacientes/medicos fica inviável.

 

faria apenas com combobox o seguite:

cbMedico.DataSource = medDal.listarMedicos();

cbMedico.DisplayMember = "nomemedico";

cbMedico.ValueMember = "idmedico";

 

Pesquisando na net achei algumas coisas, porém não consegui implementar no meu projeto, por isso peço aqui a ajuda de vcs.

 

tentei fazer algo como declarar meu txtMedico como public, porem ainda sim, no meu form de consultas não consigo acessar.

 

Obrigado desde ja.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte

 

Crie um módulo e declare as seguintes variaveis:

 

public string medNome; public bool pesquisaMed;

 

no activate do formulario de consultas coloque um rotina para verificar se pesquisaMed == true, se for true, insira medNome no textBox e passe pesquisaMed=false.

 

Na tela em que irá pesquisar o medico/paciente coloque um textbox para o cara digitar, e uma Grid que vai filtrando de acordo com o que vai digitando, e em botao ok pegue o nome do linha selecionada da Grid e jogue em medNome e seta pesquisaMed = true;

 

detalhe, abra a tela de pesquisa em modo Modal, assim que fechar ela o foco vai para o outro form ativando o evento Activate, já fiz isso em Vb.net e funcionava.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte

 

Crie um módulo e declare as seguintes variaveis:

 

public string medNome; public bool pesquisaMed;

 

no activate do formulario de consultas coloque um rotina para verificar se pesquisaMed == true, se for true, insira medNome no textBox e passe pesquisaMed=false.

 

Na tela em que irá pesquisar o medico/paciente coloque um textbox para o cara digitar, e uma Grid que vai filtrando de acordo com o que vai digitando, e em botao ok pegue o nome do linha selecionada da Grid e jogue em medNome e seta pesquisaMed = true;

 

detalhe, abra a tela de pesquisa em modo Modal, assim que fechar ela o foco vai para o outro form ativando o evento Activate, já fiz isso em Vb.net e funcionava.

 

Como abrir em modo Modal? Não conheço...

 

Quando clico no botão de pesuisa, instancio o objeto assim:

 

frmBuscaMedico frm = new frmBuscaMedico();

frm.Show();

Compartilhar este post


Link para o post
Compartilhar em outros sites

frm.ShowDialog();

 

acho que é isso

 

certo, criei os campos que preciso... tive de por static porque se ficar apenas como public não consigo acessar setar no form de consulta de jeito

nenhum

 

 

 

public partial class frmConsulta : Form
   {
       public static string nomeMed;
       public static int codMed;
       public static string nomePac;
       public static int codPac;
       public static bool pesquisaMed = true;
       public static bool pesquisaPac = true;

 

no evento activated do form de consulta

 

private void frmConsulta_Activated(object sender, EventArgs e)
       {
           if (pesquisaMed)
           {
               txtMedico.Text = nomeMed;
               pesquisaMed = false;
           }
       }

 

e o form de consulta passando o valor das linhas para as variaveis

 

           frmConsulta.codMed = Convert.ToInt32(dtgvMedicos["idmedico", dtgvMedicos.CurrentRow.Index].Value.ToString());
           frmConsulta.nomeMed = dtgvMedicos["nomemedico", dtgvMedicos.CurrentRow.Index].Value.ToString();
           this.Close();

 

fiz como disse: frm.ShowDialog();

porém ainda não funciona...

 

coloquei uma MessageBox no evento Activated e ele é chamado logo após o Load, depois que eu fecho o form de busca ao clicar duas vezes na linha que quero, nada acontece, ou seja, o evento activated não é chamado quando eu fecho o form de consulta.

 

Só preciso saber qual é o evento correto quando o form consulta volta a ganhar o foco. Coloquei o codigo que estava no activated no Leave do botão, e após sair funcionou perfeitamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Coloquei o codigo que estava no activated no Leave do botão, e após sair funcionou perfeitamente.

 

desse jeito deu realmente certo ou ainda vai precisar de um evento do form?

 

 

se deu certo deixa assim, se não vamos ter que ver outro jeito, pelo menos em vb activated era chamado quando voltava o foco no form

Compartilhar este post


Link para o post
Compartilhar em outros sites
Coloquei o codigo que estava no activated no Leave do botão, e após sair funcionou perfeitamente.

 

desse jeito deu realmente certo ou ainda vai precisar de um evento do form?

 

 

se deu certo deixa assim, se não vamos ter que ver outro jeito, pelo menos em vb activated era chamado quando voltava o foco no form

 

 

Deu certo, porém achei um tutorial na internet que mostrava um método mais prático. Deu certo do jeito que me falou, porém não encontrei um outro evento adequado para colocar.

segue o link pra quem quiser:

http://www.linhadecodigo.com.br/artigo/1741/Trocando-informa%C3%A7%C3%B5es-entre-WINDOWSFORMS-em-Csharp.aspx

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.