Referencia a campo del Formulario

18/01/2008 - 12:17 por Niurka | Informe spam
Hola, ojala me puedan ayudar con esto:


Clase de form con un campo TB

public class FormDatos : Form
{
public ToolStrip TB;
.
}

Luego luego en otra clase llamada TextBoxDatos.

public class TextBoxDatos : TextBox
{
private void ChequeaTB ()
{
}
}

Considerando que a un FormDatos yo le incluya una instancia de TextBoxDatos
pero durante el diseño del form, como hago para dentro del metodo ChequeaTB
tener acceso al campo TB del formulario?

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
18/01/2008 - 12:28 | Informe spam
"Niurka" wrote in message
news:%
Clase de form con un campo TB

public class FormDatos : Form
{
public ToolStrip TB;
.
}

Luego luego en otra clase llamada TextBoxDatos.

public class TextBoxDatos : TextBox
{
private void ChequeaTB ()
{
}
}

Considerando que a un FormDatos yo le incluya una instancia de
TextBoxDatos pero durante el diseño del form, como hago para dentro del
metodo ChequeaTB tener acceso al campo TB del formulario?



Desde el textBox puedes acceder al formulario que lo contiene a través de la
propiedad Parent. Sin embargo, no puedes poner directamente esto:

ToolStrip ts = this.Parent.TB;

debido a que "Parent" es del tipo Control y no del tipo de la clase
FormDatos (que es hija de Control), por lo que el compilador no te
reconocerá "Parent.TB". La solución sería usar un "cast":

ToolStrip ts = ((FormDatos)this.Parent).TB;

pero esto solo funcionará si están los dos en el mismo proyecto o si
puedes ponerle al proyecto del textbox una referencia al proyecto del form.
Si esto no es viable, puedes acceder a la propiedad por Reflexión, o bien
puedes declarar un Interface adecuado para exponer ese campo, hacer que el
form implemente el interface, y poner desde el proyecto del textbox una
referencia a la dll que contenga ese interface.
Respuesta Responder a este mensaje
#2 Jesús López
18/01/2008 - 12:45 | Informe spam
¿Por qué no pasar TB como parámetro a ChequeaTB?

void ChequeaTB( ToolStrip TB)
{


}


"Niurka" escribió en el mensaje
news:%
Hola, ojala me puedan ayudar con esto:


Clase de form con un campo TB

public class FormDatos : Form
{
public ToolStrip TB;
.
}

Luego luego en otra clase llamada TextBoxDatos.

public class TextBoxDatos : TextBox
{
private void ChequeaTB ()
{
}
}

Considerando que a un FormDatos yo le incluya una instancia de
TextBoxDatos pero durante el diseño del form, como hago para dentro del
metodo ChequeaTB tener acceso al campo TB del formulario?



Respuesta Responder a este mensaje
#3 Niurka
18/01/2008 - 12:47 | Informe spam
La opcion del cast me funcionó a la perfeccion. Te lo agradezco mucho.


"Alberto Poblacion"
escribió en el mensaje news:
"Niurka" wrote in message
news:%
Clase de form con un campo TB

public class FormDatos : Form
{
public ToolStrip TB;
.
}

Luego luego en otra clase llamada TextBoxDatos.

public class TextBoxDatos : TextBox
{
private void ChequeaTB ()
{
}
}

Considerando que a un FormDatos yo le incluya una instancia de
TextBoxDatos pero durante el diseño del form, como hago para dentro del
metodo ChequeaTB tener acceso al campo TB del formulario?



Desde el textBox puedes acceder al formulario que lo contiene a través de
la propiedad Parent. Sin embargo, no puedes poner directamente esto:

ToolStrip ts = this.Parent.TB;

debido a que "Parent" es del tipo Control y no del tipo de la clase
FormDatos (que es hija de Control), por lo que el compilador no te
reconocerá "Parent.TB". La solución sería usar un "cast":

ToolStrip ts = ((FormDatos)this.Parent).TB;

pero esto solo funcionará si están los dos en el mismo proyecto o si
puedes ponerle al proyecto del textbox una referencia al proyecto del
form. Si esto no es viable, puedes acceder a la propiedad por Reflexión, o
bien puedes declarar un Interface adecuado para exponer ese campo, hacer
que el form implemente el interface, y poner desde el proyecto del textbox
una referencia a la dll que contenga ese interface.

Respuesta Responder a este mensaje
#4 Niurka
18/01/2008 - 13:16 | Informe spam
Hola,

Si pero en todo caso el problema sería el mismo de conseguir una referencia
a TB para pasarsela como parametro a ese metodo ya que se trata de que
estoy disenando la clase de forma generica.

Pero ya lo había resuelto con la opcion que me dio Alberto Poblacion:
ToolStrip ts = ((FormDatos)this.Parent).TB;

Gracias


"Jesús López" escribió en el
mensaje news:%
¿Por qué no pasar TB como parámetro a ChequeaTB?

void ChequeaTB( ToolStrip TB)
{


}


"Niurka" escribió en el mensaje
news:%
Hola, ojala me puedan ayudar con esto:


Clase de form con un campo TB

public class FormDatos : Form
{
public ToolStrip TB;
.
}

Luego luego en otra clase llamada TextBoxDatos.

public class TextBoxDatos : TextBox
{
private void ChequeaTB ()
{
}
}

Considerando que a un FormDatos yo le incluya una instancia de
TextBoxDatos pero durante el diseño del form, como hago para dentro del
metodo ChequeaTB tener acceso al campo TB del formulario?







Respuesta Responder a este mensaje
#5 Jesús López
18/01/2008 - 13:42 | Informe spam
Sin embargo a no me parece un diseño genérico, más bien un diseño extraño el
que una caja de texto tenga que chequear otro control, y que además esa caja
de texto asuma que está en un formulario de tipo FormDatos. Eso quiere decir
que esa caja de texto nunca funcionará en otro formulario. Además la caja de
texto asume que su padre directo es el formulario, eso significa que no
funcionará si está en un panel, o en otro control como un tab control.

Un diseño más genérico y natural sería que fuera el formulario el comprobara
el ToolStrip, cuando fuera necesario,


"Niurka" escribió en el mensaje
news:
Hola,

Si pero en todo caso el problema sería el mismo de conseguir una
referencia a TB para pasarsela como parametro a ese metodo ya que se
trata de que estoy disenando la clase de forma generica.

Pero ya lo había resuelto con la opcion que me dio Alberto Poblacion:
ToolStrip ts = ((FormDatos)this.Parent).TB;

Gracias


"Jesús López" escribió en el
mensaje news:%
¿Por qué no pasar TB como parámetro a ChequeaTB?

void ChequeaTB( ToolStrip TB)
{


}


"Niurka" escribió en el mensaje
news:%
Hola, ojala me puedan ayudar con esto:


Clase de form con un campo TB

public class FormDatos : Form
{
public ToolStrip TB;
.
}

Luego luego en otra clase llamada TextBoxDatos.

public class TextBoxDatos : TextBox
{
private void ChequeaTB ()
{
}
}

Considerando que a un FormDatos yo le incluya una instancia de
TextBoxDatos pero durante el diseño del form, como hago para dentro del
metodo ChequeaTB tener acceso al campo TB del formulario?











Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida