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.
 

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

Preguntas similares