Jump to content

Archived

This topic is now archived and is closed to further replies.

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);		}	}}

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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).

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.