objetos y clases

20/02/2010 - 00:53 por Ariel | Informe spam
Hola quisiera saber como se puede tener acceso a un objeto que esta en
un formulario (por ej. un textbox) desde una clase.

por ej
el formulario1 tiene un textbox llamado textbox1, ademas
un boton que llama a una funcion "funcion1" en una clase general
(donde guardo un monton de procedimientos)
y esa funcion necesita acceder al textbox del formulario1 para saber
las propiedades o valores y poder cambiarlos
segun sea necesario.-

Desde ya muchas gracias a Todos.
Atte. Ariel

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
20/02/2010 - 12:29 | Informe spam
"Ariel" wrote in message
news:
Hola quisiera saber como se puede tener acceso a un objeto que esta en
un formulario (por ej. un textbox) desde una clase.

por ej
el formulario1 tiene un textbox llamado textbox1, ademas
un boton que llama a una funcion "funcion1" en una clase general
(donde guardo un monton de procedimientos)
y esa funcion necesita acceder al textbox del formulario1 para saber
las propiedades o valores y poder cambiarlos
segun sea necesario.-



El formulario *es* una clase. Para aceder desde cualquier clase a una
variable que está dentro de una instancia de una clase cualquiera
(incluyendo un formulario) lo que se necesita es tener acceso a la
*referencia* a esa instancia de la clase.
Desde un formulario, la referencia a sí mismo se llama "this". Y ese
"this" tienes que hacérselo llegar a la "funcion1" desde la que quieres
acceder al textbox del formulario. Se lo puedes pasar de muchas formas, por
ejemplo, en el constructor de la clase, o como argumento en la llamada del
método:

//En el formulario:

class Form1:Form
{
...
void button1_Click(...)
{
MiClase mic = new MiClase();
mic.funcion1(this);
}
...
}


//En la clase:

public class MiClase
{
...
public void funcion1(Form1 f)
{
TextBox t = f.textbox1;

}
}
Respuesta Responder a este mensaje
#2 Ariel
20/02/2010 - 14:26 | Informe spam
On 20 feb, 08:29, "Alberto Poblacion" <earthling-
wrote:
"Ariel" wrote in message

news:

> Hola quisiera saber como se puede tener acceso a un objeto que esta en
> un formulario (por ej. un textbox) desde una clase.

> por ej
> el formulario1 tiene un textbox llamado textbox1, ademas
> un boton que llama a una funcion "funcion1" en una clase general
> (donde guardo un monton de procedimientos)
> y esa funcion necesita acceder al textbox del formulario1 para saber
> las propiedades o valores y poder cambiarlos
> segun sea necesario.-

   El formulario *es* una clase. Para aceder desde cualquier clase a una
variable que está dentro de una instancia de una clase cualquiera
(incluyendo un formulario) lo que se necesita es tener acceso a la
*referencia* a esa instancia de la clase.
   Desde un formulario, la referencia a sí mismo se llama "this". Y ese
"this" tienes que hacérselo llegar a la "funcion1" desde la que quieres
acceder al textbox del formulario. Se lo puedes pasar de muchas formas, por
ejemplo, en el constructor de la clase, o como argumento en la llamada del
método:

//En el formulario:

class Form1:Form
{
...
   void button1_Click(...)
   {
       MiClase mic = new MiClase();
       mic.funcion1(this);
   }
...

}

//En la clase:

public class MiClase
{
   ...
   public void funcion1(Form1 f)
   {
        TextBox t = f.textbox1;
       
   }

}




Hola Alberto, y muchas gracias x responder. Te comento que aunque he
copiado tu ejemplo de codigo ahun no he podido acceder al textbox,
tambien lo defino como public en su propiedad Modifiers, alguna otra
idea.? Desde ya muchas Gracias a Todos
Respuesta Responder a este mensaje
#3 A Trujillo
20/02/2010 - 17:56 | Informe spam
Hola Ariel, (te lo postee esta mañana a eso de las 9:30, pero por alguna razón no aparece.
Basicamente es lo mismo que te dice Alberto Poblacion, quizás visto desde otro ángulo)
A la clase donde tienes la "funcion1" le tienes que pasar el objeto que quieres modificar su valor o
propiedad; puedes hacerlo así:

// Esta es la clase en la que tienes la "funcion1"
public class MyClaseGeneral
{
// Campo privado
private System.Windows.Forms.Control myTextBox;

// Constructor que recibe el objeto textBox
public MyClaseGeneral(System.Windows.Forms.Control cTextBox) {
myTextBox = cTextBox;
}

// Tú función donde, entre otras cosas modificas el textBox
public void funcion1() {
myTextBox.Text = "Hola mundo";
}
}

En el evento click del boton tendrías algo como esto:

// Esta es la clase del formulario
private void button1_Click( object sender, EventArgs e ) {
MyClaseGeneral c = new MyClaseGeneral( textBox1 ); // Instancias la clase donde está la
"funcion1" y le pasas el textBox
c.funcion1(); // disparas tu funcion donde interactuas con el textBox
}

Te estoy dando una solución sin tener conocimiento de tú circunstancia concreta: por ejemplo, no se
si tu funcion1 está en una clase estatica. Si fuera así tendrías que pasar el objeto directamente a
la función porque no hay constructor.

Espero haber ayudado,

A Trujillo


"Ariel" wrote in message
news:
Hola quisiera saber como se puede tener acceso a un objeto que esta en
un formulario (por ej. un textbox) desde una clase.

por ej
el formulario1 tiene un textbox llamado textbox1, ademas
un boton que llama a una funcion "funcion1" en una clase general
(donde guardo un monton de procedimientos)
y esa funcion necesita acceder al textbox del formulario1 para saber
las propiedades o valores y poder cambiarlos
segun sea necesario.-

Desde ya muchas gracias a Todos.
Atte. Ariel


Respuesta Responder a este mensaje
#4 Ariel
20/02/2010 - 18:21 | Informe spam
On 20 feb, 13:56, "A Trujillo" wrote:
Hola Ariel, (te lo postee esta mañana a eso de las 9:30, pero por alguna razón no aparece.
Basicamente es lo mismo que te dice Alberto Poblacion, quizás visto desde otro ángulo)
A la clase donde tienes la "funcion1" le tienes que pasar el objeto que quieres modificar su valor o
propiedad; puedes hacerlo así:

// Esta es la clase en la que tienes la "funcion1"
public class  MyClaseGeneral
   {
      // Campo privado
      private System.Windows.Forms.Control myTextBox;

     // Constructor que recibe el objeto textBox
     public MyClaseGeneral(System.Windows.Forms.Control cTextBox) {
         myTextBox = cTextBox;
      }

      // Tú función donde, entre otras cosas modificas el textBox
      public void funcion1() {
         myTextBox.Text = "Hola mundo";
      }
   }

En el evento click del boton tendrías algo como esto:

// Esta es la clase del formulario
private void button1_Click( object sender, EventArgs e ) {
         MyClaseGeneral c = new MyClaseGeneral( textBox1 );    // Instancias la clase donde está la
"funcion1" y le pasas el textBox
         c.funcion1();    // disparas tu funcion donde interactuas con el textBox
      }

Te estoy dando una solución sin tener conocimiento de tú circunstancia concreta: por ejemplo, no se
si tu funcion1 está en una clase estatica. Si fuera así tendrías que pasar el objeto directamente a
la función porque no hay constructor.

Espero haber ayudado,

A Trujillo


"Ariel" wrote in message

news:

> Hola quisiera saber como se puede tener acceso a un objeto que esta en
> un formulario (por ej. un textbox) desde una clase.

> por ej
> el formulario1 tiene un textbox llamado textbox1, ademas
> un boton que llama a una funcion "funcion1" en una clase general
> (donde guardo un monton de procedimientos)
> y esa funcion necesita acceder al textbox del formulario1 para saber
> las propiedades o valores y poder cambiarlos
> segun sea necesario.-

> Desde ya muchas gracias a Todos.
> Atte. Ariel





Gracias A.Trujillo, probare tambien lo que tu me expones y luego les
contare como me ha ido.
Respuesta Responder a este mensaje
#5 Alberto Poblacion
20/02/2010 - 19:29 | Informe spam
"Ariel" wrote in message
news:
On 20 feb, 08:29, "Alberto Poblacion" <earthling-
wrote:
Hola Alberto, y muchas gracias x responder. Te comento que aunque he
copiado tu ejemplo de codigo ahun no he podido acceder al textbox,
tambien lo defino como public en su propiedad Modifiers, alguna otra
idea.? Desde ya muchas Gracias a Todos



Te aseguro que con un código de ese tipo funciona. Te copio debejo el
código que acabo de teclear en un proyecto. Lo he compilado y lo he
ejecutado, y funciona.

//Formulario:
namespace Prueba
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Class1 c = new Class1();
c.MiMetodo(this);
}
}
}


//Clase:
namespace Prueba
{
class Class1
{
public void MiMetodo(Form1 f)
{
f.textBox1.Text = "Hola, mundo";
}
}
}

En el formulario he arrstrado un textbox y le he puesto "public" en la
propiedad modifiers. Lo he compilado y ejecutado, y efectivamente en el
textbox sale "Hola, mundo", con lo que se demuestra que la clase ha accedido
a él.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida