Propiedad Text de un Objeto pasado como argumento en C#

10/02/2007 - 13:27 por Fabián | Informe spam
Les agradeceré mucho que me ayuden con este tema.
Necesito aplicar un método en C# que lo tomé de un ejemplo escrito en VB y
no me funciona la propiedad Text de un objeto que paso como argumento al
método.

private void btNumero_Click(Object obj, EventArgs e)
{
Response.Write(respuesta.ToString());
if (tbNumero.Text != "0")
{
tbNumero.Text = tbNumero.Text + obj.Text ;
// esta forma no me funciona en C#

// tbNumero.Text = tbNumero.Text + obj.ToString();
// probé de esta forma pero me devuelve en
nombre
// de la clase
}
else
{
tbNumero.Text = obj.ToString();
// tampoco me da la propiedad Texto del objeto

respuesta = 0;
}
}
Simplemente necesito obtener la propiedad Text de "obj" que es un botón y no
le encuentro la vuelta.
desde ya muchas gracias
Fabián.
Principiante.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
10/02/2007 - 14:36 | Informe spam
"Fabián" wrote in message
news:
[...]
tbNumero.Text = tbNumero.Text + obj.Text ;
// esta forma no me funciona en C#



Lógico que no funcione en C#: obj es del tipo System.Object, y
System.Object no tiene la propiedad Text. Si sabes que dentro del object has
encapsulado un tipo concreto que sí que tiene la propiedad Text, puedes
hacer un "cast" al tipo en cuestión. Por ejemplo, si el tipo es "TextBox":

TextBox t = (TextBox)obj;
tbNumero.Text = tbNumero.Text + t.Text ;


Si en obj pueden venir múltiples tipos de objetos, y no sabes cuál es
el que te viene, puedes usar Reflexión para extraer la propiedad Text:

using System.Reflection;
...
PropertyInfo pi = obj.GetType.GetProperty("Text");
if (pi!=null) //Es null si obj no tiene Text
{
string texto = (string)pi.GetValue(obj, null);
tbNumero.Text = tbNumero.Text + texto;
}
Respuesta Responder a este mensaje
#2 Fabián
12/02/2007 - 10:57 | Informe spam
Muchas Gracias Alberto...me fue muy útil tu ayuda.
Fabián.
Principiante.


"Alberto Poblacion" wrote:

"Fabián" wrote in message
news:
> [...]
> tbNumero.Text = tbNumero.Text + obj.Text ;
> // esta forma no me funciona en C#

Lógico que no funcione en C#: obj es del tipo System.Object, y
System.Object no tiene la propiedad Text. Si sabes que dentro del object has
encapsulado un tipo concreto que sí que tiene la propiedad Text, puedes
hacer un "cast" al tipo en cuestión. Por ejemplo, si el tipo es "TextBox":

TextBox t = (TextBox)obj;
tbNumero.Text = tbNumero.Text + t.Text ;


Si en obj pueden venir múltiples tipos de objetos, y no sabes cuál es
el que te viene, puedes usar Reflexión para extraer la propiedad Text:

using System.Reflection;
...
PropertyInfo pi = obj.GetType.GetProperty("Text");
if (pi!=null) //Es null si obj no tiene Text
{
string texto = (string)pi.GetValue(obj, null);
tbNumero.Text = tbNumero.Text + texto;
}





Respuesta Responder a este mensaje
#3 Fabián
12/02/2007 - 10:58 | Informe spam
Muchas Gracias Juan
Fabián.
Principiante.


"Juan Diego Bueno" wrote:

No se... pero digo yo que para obtener la propiedad text del botón, si se
refiere a btNumero, tendrás que hacer btNumero.Text, y no obj.Text

Y sino, pues hacer un casting sobre obj: (Button)obj.Text

Saludos

"Fabián" escribió en el mensaje
news:
> Les agradeceré mucho que me ayuden con este tema.
> Necesito aplicar un método en C# que lo tomé de un ejemplo escrito en VB y
> no me funciona la propiedad Text de un objeto que paso como argumento al
> método.
>
> private void btNumero_Click(Object obj, EventArgs e)
> {
> Response.Write(respuesta.ToString());
> if (tbNumero.Text != "0")
> {
> tbNumero.Text = tbNumero.Text + obj.Text ;
> // esta forma no me funciona en C#
>
> // tbNumero.Text = tbNumero.Text + obj.ToString();
> // probé de esta forma pero me devuelve en
> nombre
> // de la clase
> }
> else
> {
> tbNumero.Text = obj.ToString();
> // tampoco me da la propiedad Texto del
> objeto
>
> respuesta = 0;
> }
> }
> Simplemente necesito obtener la propiedad Text de "obj" que es un botón y
> no
> le encuentro la vuelta.
> desde ya muchas gracias
> Fabián.
> Principiante.

Estoy utilizando la versión gratuita de SPAMfighter para usuarios privados.
Ha eliminado 5567 correos spam hasta la fecha.
Los abonados no tienen este mensaje en sus correos.
¡Pruebe SPAMfighter gratis ya!



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida