Usuário com melhor resposta
Pegar valor de componente de outro form

Pergunta
-
Olá galera.
Estou com problemas para pegar os valores de componentes de outro form.
Eu gostaria, por exemplo: No form1 tenho um textbox txt1. No txt1 o usuario digita seu nome, por exemplo, e ao clicar em um botão, o form2 pegue esse valor e trabalhe com ele.
Estou usando windowsform e tentei o seguinte:
private Inclui_Operador crcsOperador;
private void btnSalvar_Click(object sender, EventArgs e)
{crcsOperador = new Inclui_Operador();
Salvar(crcsOperador.NomeText); //o valor aqui vem vazio.
}
public void Salvar(TextBox Operador)
{
..
}
O que posso fazer?
Respostas
-
Bom dia Guilherme,
Já tem uma longa discussão sobre isso aqui no Forum, em especial nessa thread que vou lhe passar abaixo:
http://social.msdn.microsoft.com/forums/pt-br/vscsharppt/thread/A9023EC4-7875-4A40-BF3A-65FB75B7C9B5
Elielson de Andrade elielson( a )gd.com.br www.despcompany.com www.emyface.com- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 27 de setembro de 2010 17:40
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de outubro de 2010 22:37
-
Guilherme,
Além do link com a ótima thread que o Elielson te passou, sugiro também que você dê uma olhada neste artigo do CodeProject:
http://www.codeproject.com/KB/cs/pass_data_between_forms.aspx
Nesse link o autor explica umas 4 formas de passar dados entre forms...
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 27 de setembro de 2010 17:40
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de outubro de 2010 22:37
-
Olá meu caro de uma olhada de como trocar informações entre
componentes de forms qlqr duvida posta aihttp://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/cb1f26b1-ac76-4edd-861f-07b9a297c33b/#9c6549e3-6d89-485e-bb8e-9e156ba9fb30
Att Edney
Se for útil por favor marque ;D
- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 27 de setembro de 2010 17:40
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de outubro de 2010 22:37
-
Guilherme,
Mas então você já tem um form Inclui_Operador quando você clica no botão de Salvar? Se sim, você abriu esse form anteriormente, certo? Como está o código dessa parte que abre o form Inclui_Operador anteriormente?
Nesse momento que você está abrindo o form (fora do código do botão salvar), você poderia guardar a instância do form Inclui_Operador que você está abrindo... Seria algo mais ou menos assim:
private Inclui_Operador fInclui_Operador; private void AbreFormIncluiOperador() { fInclui_Operador = new Inclui_Operador(); fInclui_Operador.Show(); } private void btSalvar_Click() { Salvar(fInclui_Operador.txtUsuario.Text); }
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 8 de outubro de 2010 00:18
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de outubro de 2010 22:37
-
Cara não sei em q pé está mas se for oq eu entendi para acabar com a discução faça o seguinte:
vc tem dois forms correto pega o q tem o textbox e cria esse método dentro dele
public string ValorDoTextBox()
{
return teuTextBox.Tex;
}
no teu form principal ond vc vai abrir esse form faz o seguinte cria a seguinte propriedade nele
private OteuFormQueTemOtextBox frmTXT;
vai no botão q abre ele e põem esse código
private void botãoQueAbreOformDoTexBox_Click(object sender, EventArgs e)
{
frmTXT = new OteuFormQueTemOtextBox();
frmTXT.Show();
}
e no teu botão salvar confira se ele ta puxando o valor q vc qr
private void botãoQueSalva_Click(object sender, EventArgs e)
{
MessageBox.Show(frmTXT.ValorDoTextBox());
}
OK??? isso fara com q vc consiga pegar o valor do teu textbox a vontade mais cuidado vc tem
q fazer um ótimo tratamento de erros nesse caso se não da ____
Att Edney;
Se for útil por favor não esqueça de marcar, facilitando com isso
a vida das pessoas com esta msma dúvida
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de outubro de 2010 22:37
-
Olá galera, obrigado por toda a ajuda, acho que por algum erro de estruturação não consegui fazer funcionar nenhum dos metodos me passados. Estudando mais afundo sobre herança, consegui fazer funcionar desse jeito, caso seja um jeito errado ou eu tenha problemas peço que por gentileza me ajudem.
public partial class Form_Base : Form { public Form_Base() { InitializeComponent(); } public virtual void btnSalvar_Click(object sender, EventArgs e) { } } public partial class Inclui_Operador : Form_Base { Inclui_Operador() { InitializeComponent(); } public override void btnNovo_Click(object sender, EventArgs e) { base.btnNovo_Click(sender, e); MessageBox.Show("OK"); } }
- Marcado como Resposta Guilherme Ferrera segunda-feira, 25 de outubro de 2010 10:30
Todas as Respostas
-
Bom dia Guilherme,
Já tem uma longa discussão sobre isso aqui no Forum, em especial nessa thread que vou lhe passar abaixo:
http://social.msdn.microsoft.com/forums/pt-br/vscsharppt/thread/A9023EC4-7875-4A40-BF3A-65FB75B7C9B5
Elielson de Andrade elielson( a )gd.com.br www.despcompany.com www.emyface.com- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 27 de setembro de 2010 17:40
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de outubro de 2010 22:37
-
Guilherme,
Além do link com a ótima thread que o Elielson te passou, sugiro também que você dê uma olhada neste artigo do CodeProject:
http://www.codeproject.com/KB/cs/pass_data_between_forms.aspx
Nesse link o autor explica umas 4 formas de passar dados entre forms...
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 27 de setembro de 2010 17:40
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de outubro de 2010 22:37
-
Olá meu caro de uma olhada de como trocar informações entre
componentes de forms qlqr duvida posta aihttp://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/cb1f26b1-ac76-4edd-861f-07b9a297c33b/#9c6549e3-6d89-485e-bb8e-9e156ba9fb30
Att Edney
Se for útil por favor marque ;D
- Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 27 de setembro de 2010 17:40
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de outubro de 2010 22:37
-
Guilherme,
Tente assim:
No form2 declare uma variavel, por exemplo
string txt =null;
No form1 quando for chamar o form2 faça assim:
form2 form = new form2();
form.txt = this.txt1.text;
form.show();
Isso é uma maneira rapida, porém seria de grande utilidade se vc ler os artigos e topicos passados pelo nossos amigos.
att,
Rafael Tomitão
-
Ola galera, muito obrigado pela ajuda. Infelizmente ainda não obtive sucesso. Tentei praticamente todas as sugestões que você me passaram. Deixe-me tentar explicar melhor. Eu tenho um form base que contem um toolstrip e eu gostaria de usar esse form base em varias outras telas para poder utilizar o tollstrip. Por exemplo no form operador eu herdei o for base:
public partial class Inclui_Operador : Form_Base
E agora eu gostaria de qaundo eu clicasse no botão de salvar que fica no tollstrip (form base) eu conseguisse pegar os valores digitados nos textbox. Do jeito que eu havia tentado e vcs me sugeriram eu consigo encontrar os textbox, mas debugando o programa percebo que o form basse reconhece eles como nulo, enquanto ele possuem valor digitado.
O que posso faze? Muito obrigado pela ajuda.
-
Guilherme,
Entendi o cenário... Como você está fazendo no click do seu botão do form base?
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
-
Guilherme,
Mas, você está criando um objeto do tipo Inclui_Operador e logo em seguida pegando o valor de txtUsuario.Text... A não ser que você esteja fazendo alguma alteração ou tratamento no construtor de Inclui_Operador, faz sentido que ele esteja vindo em branco... Você faz alguma coisa no construtor de Inclui_Operador?
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
-
Guilherme,
Não entendi mais nada... Você está instanciando um form Inclui_Operador e logo na próxima linha pega o valor de um textbox dele... Se você não faz nada no construtor, é natural que o texto desse textbox esteja vazio... Qual o valor que você esperava que ele retornasse?
Não tenho certeza, mas, pode ser que você esteja se perdendo na arquitetura da sua aplicação...
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima -
O problema é que no meu caso os dois forms estão abertos já. O form_base só contem o menu com botões. E o que eu queria era digitar em textbox no form inclui_operador e quando eu clicasse em salvar no menu (form_base) o evento click do form base fosse capaz de pegar o que foi digitado no textbox do form inclui_operador, para então realizar os comando de inclusão/alteração no banco. Se você souber de alguma solução.
Obrigado pela atenção!
-
Guilherme,
Mas então você já tem um form Inclui_Operador quando você clica no botão de Salvar? Se sim, você abriu esse form anteriormente, certo? Como está o código dessa parte que abre o form Inclui_Operador anteriormente?
Nesse momento que você está abrindo o form (fora do código do botão salvar), você poderia guardar a instância do form Inclui_Operador que você está abrindo... Seria algo mais ou menos assim:
private Inclui_Operador fInclui_Operador; private void AbreFormIncluiOperador() { fInclui_Operador = new Inclui_Operador(); fInclui_Operador.Show(); } private void btSalvar_Click() { Salvar(fInclui_Operador.txtUsuario.Text); }
André Alves de Lima
Visite o meu site: http://andrealveslima.spaces.live.com
Me siga no Twitter: @andrealveslima- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 8 de outubro de 2010 00:18
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de outubro de 2010 22:37
-
Cara não sei em q pé está mas se for oq eu entendi para acabar com a discução faça o seguinte:
vc tem dois forms correto pega o q tem o textbox e cria esse método dentro dele
public string ValorDoTextBox()
{
return teuTextBox.Tex;
}
no teu form principal ond vc vai abrir esse form faz o seguinte cria a seguinte propriedade nele
private OteuFormQueTemOtextBox frmTXT;
vai no botão q abre ele e põem esse código
private void botãoQueAbreOformDoTexBox_Click(object sender, EventArgs e)
{
frmTXT = new OteuFormQueTemOtextBox();
frmTXT.Show();
}
e no teu botão salvar confira se ele ta puxando o valor q vc qr
private void botãoQueSalva_Click(object sender, EventArgs e)
{
MessageBox.Show(frmTXT.ValorDoTextBox());
}
OK??? isso fara com q vc consiga pegar o valor do teu textbox a vontade mais cuidado vc tem
q fazer um ótimo tratamento de erros nesse caso se não da ____
Att Edney;
Se for útil por favor não esqueça de marcar, facilitando com isso
a vida das pessoas com esta msma dúvida
- Marcado como Resposta AndreAlvesLimaModerator quinta-feira, 14 de outubro de 2010 22:37
-
Olá galera, obrigado por toda a ajuda, acho que por algum erro de estruturação não consegui fazer funcionar nenhum dos metodos me passados. Estudando mais afundo sobre herança, consegui fazer funcionar desse jeito, caso seja um jeito errado ou eu tenha problemas peço que por gentileza me ajudem.
public partial class Form_Base : Form { public Form_Base() { InitializeComponent(); } public virtual void btnSalvar_Click(object sender, EventArgs e) { } } public partial class Inclui_Operador : Form_Base { Inclui_Operador() { InitializeComponent(); } public override void btnNovo_Click(object sender, EventArgs e) { base.btnNovo_Click(sender, e); MessageBox.Show("OK"); } }
- Marcado como Resposta Guilherme Ferrera segunda-feira, 25 de outubro de 2010 10:30