Ir para conteúdo

Arquivado

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

haggen

Acessando objetos de outro form C#

Recommended Posts

pqp naum aguento mais procurar por isso e soh encontra aquela maldita "solução" que não funciona...

eu tenho dois forms, e quero acessar um textbox que esta no outro...

 

googleando por aih voce encontra uma simples solução bem facil:

 

class Form2 {    Form1 frm = new Form1();  frm.TextBox1.Text = "ola";}
meu, naum aguento mais tenta esta mer** e naum conseguir nada...

pela amor de deus alguem me da um help, ja to de saco cheio :(

 

eu tava lendo tambem sobre declaração talz, public, protected, private, e etc...

pelo que eu intendi eh soh mete um PUBLIC no que voce quer usar e pronto, mas tambem naum eh assim :(

abaixo segue meu codigo

 

using System;using System.IO;using System.Drawing;using System.Diagnostics;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace WTFE {	public class MainForm : System.Windows.Forms.Form {		public System.Windows.Forms.ListBox lstAddress;			public MainForm() {InitializeComponent();}		protected override void Dispose( bool disposing ) {			if( disposing ) {if (components != null) components.Dispose();}			base.Dispose( disposing );		}	// aqueles troço gerado pelo Designer...		[STAThread]	static void Main() {Application.Run(new MainForm());}	}}
using System;using System.Drawing;using System.Windows.Forms;namespace WTFE{	public class frmNew : System.Windows.Forms.Form	{		private System.Windows.Forms.Button btnAdd;		private System.Windows.Forms.TextBox txbAddress;		public frmNew() {InitializeComponent();}				// mais daqueles troços gerados pelo Designer				public void AddClick(object sender, System.EventArgs e) {				//aqui eh onde eu quero colocar			MainForm f = new MainForm();			f.lstAddress.Items.Add(txbAddress.Text);		}	}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui tem este skema de acessar o textbox de outro form, esta em vb.net é só trocar a sintaxe pois a idéia é a mesma, se precisar aqui no fórum tem alguns sites que fazem a conversão de C#.net pra vb.net e vice-versa.

 

http://forum.imasters.com.br/index.php?sho...53entry449553

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você só pode acessar membros de outra classe que sejam publicos. Nenhum objeto pode acessar dados privados de outro objeto. O que ocorre no seu caso é exatamente isso: você pode verificar no segundo código que você declarou os componentes como sendo campos PRIVADOS (private). Dessa forma é lógico que você não iria conseguir acessar nunca os objetos a partir de outro form (ou de qualquer outra classe).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olás!

 

Cara, para fazer isso, você pode fazer assim:

 

Dim frm = new Form2frm.Show()

Depois, você pode acessar os controles do Form2, fazendo assim:

 

frm.caixaDeTexto1.Text

Mas para isso tem que configurar o caixaDeTexto1 como public para que isso funcione.

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você possui 2 forms abertos e de um deles você quer alterar alguma propriedade do outro form ou de seus controles você tem que ter a referência (Endereço) da instância do outro form.Você pode armazenar em um array ou variável comum a lista de forms abertos, daí você busca o que você quer alterar e controla as propriedades dele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E como faz isso?

Olás!Cara, para fazer isso, você pode fazer assim:

Dim frm = new Form2frm.Show()
Depois, você pode acessar os controles do Form2, fazendo assim:
frm.caixaDeTexto1.Text
Mas para isso tem que configurar o caixaDeTexto1 como public para que isso funcione.Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá haggen.

 

Pelo q entendi de sua necessidade; você precisa pegar o valor do textbox do form desejado pra usar no seu form "pai".

você pode usar delegates pra isso.

 

Veja o exemplo abaixo:

 

Form1 q chama form2 com textbox:

 

 

private void btnForm1_Click(object sender, System.EventArgs e)

{

// Create an instance of the form that performs a lookup

Form2 form2 = new Form2();

 

// Create an instance of the delegate

form2.passControl = new Form2.PassControl(PassData);

 

// Toon form

form2.Show();

}

 

private void PassData(object sender)

{

txtForm1.Text = ((TextBox)sender).Text;

}

 

 

 

Form2 com o delegate passando o valor do textbox pro form1.

 

public delegate void PassControl(object sender);

public PassControl passControl;

 

public Form2()

{

InitializeComponent();

}

 

private void btnForm2_Click(object sender, System.EventArgs e)

{

if (passControl != null)

{

passControl(txtForm2);

}

this.Close();

}

Té mais...

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.