Foros del Web » Programación para mayores de 30 ;) » .NET »

Formar nombre de instancia a partir de Strings en C#

Estas en el tema de Formar nombre de instancia a partir de Strings en C# en el foro de .NET en Foros del Web. Hola, esto debe de poder hacerse pero no se como en este lenguaje. Tengo un listado de botones de nombres: c1, c2, c3.....con un color ...
  #1 (permalink)  
Antiguo 10/01/2010, 16:46
 
Fecha de Ingreso: julio-2005
Mensajes: 275
Antigüedad: 16 años, 5 meses
Puntos: 3
Formar nombre de instancia a partir de Strings en C#

Hola, esto debe de poder hacerse pero no se como en este lenguaje.

Tengo un listado de botones de nombres: c1, c2, c3.....con un color de fondo.

Por otro lado tengo un metodo que lee un string y me dice que numero es, con lo que ya se que es c23 o c12 segun el numero por ejemplo.

Entonces necesito c(numero).backcolor=red;

ejemplo: si el numero es 13, ("c"+13).backcolor=red;

Como podria hacer algo parecido, no se si me he explicado...

(Button)"c"+num.backcolor=red; no funciona...
  #2 (permalink)  
Antiguo 10/01/2010, 20:57
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 14 años, 4 meses
Puntos: 87
Respuesta: Formar nombre de instancia a partir de Strings en C#

no puedes hacerlo asi

tendrias que valertede usar algo como

tuform.Controls e iterar (recursivamente) y encontrar el control con el nombre que buscas, y hacer el casteo correspondiente a label o textbox segun sea tu caso
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 10/01/2010, 21:09
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Formar nombre de instancia a partir de Strings en C#

como dijo Peterpay, aca te paso como seria en visual basic .NET, no es dificil pasarlo a C#...

Código vb:
Ver original
  1. Public Class Form1
  2.  
  3.  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.  For i As Integer = 0 To 1
  5.  Dim N As Single : N += 1
  6.  DirectCast(BuscarControl("Label" & N, Me), Label).Text = "Hola " & N
  7.  Next
  8.  End Sub
  9.  
  10.  Private Function BuscarControl(ByVal NombreControl As String, ByVal ControlActual As Control) As Control
  11.  Dim ctr As Control
  12.  For Each ctr In ControlActual.Controls
  13.  If ctr.Name = NombreControl Then
  14.  Return ctr
  15.  Else
  16.  ctr = BuscarControl(NombreControl, ctr)
  17.  If Not ctr Is Nothing Then
  18.  Return ctr
  19.  End If
  20.  End If
  21.  Next ctr
  22.  End Function
  23. End Class

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #4 (permalink)  
Antiguo 11/01/2010, 05:30
 
Fecha de Ingreso: julio-2005
Mensajes: 275
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Formar nombre de instancia a partir de Strings en C#

Pero tiene que haber alguna forma de acceder al elemento si ya se el nombre, solo hay que juntar varios Strings para componer el nombre. Eso lo puedo hacer hasta en Actionscript... Tener que recorrer todos los elementos por cada uno de ellos para buscarlo me parece del paleolitico, a no ser que lo haya entendido yo mal.

gracias!
  #5 (permalink)  
Antiguo 11/01/2010, 05:50
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 13 años, 1 mes
Puntos: 31
Respuesta: Formar nombre de instancia a partir de Strings en C#

Resuelto en el último post.


Hola kitune hace un tiempo hize la misma pregunta en este foro, porque quise hacer lo mismo que tu.

Este es el link del post:

http://www.forosdelweb.com/f78/como-...troles-761761/

Esto es lo que puse en su dia.

Código:
Buenas tengo que hacer lo siguiente:
Yo no entiendo el código del enlace que me pusieron.


this.TextBox1.ImageUrl = "~/Images/1.gif";
this.TextBox2.ImageUrl = "~/Images/1.gif";
this.TextBox3.ImageUrl = "~/Images/1.gif";
this.TextBox4.ImageUrl = "~/Images/1.gif";
this.TextBox5.ImageUrl = "~/Images/1.gif";


Como se metería en un bucle de tal forma?

for(int i=0;i<6;i++)
{
this.TextBox+ "Convert.ToString(i)"+.ImageUrl = "~/Images/1.gif";
}
Y la respuesta que me dieron fue que utilizara fincontrol, pero ni idea de como implementarlo en mi código, según el link que me pusieron y lo que queria hacer tendría que hacer algo así que está sin probar:

Código:
private void Button1_Click(object sender, EventArgs MyEventArgs)
{
      // Esto si lo entiendo.
      
      for(int i=0;i<6;i++)
     {

      string sMiControl = "TextBox" + Convert.ToString(i);
      
      Control myControl1 = FindControl(sMiControl);
      if(myControl1!=null)
      {
         // Get control's parent. <-- Esto ni idea
         Control myControl2 = myControl1.Parent;
        //Tendria que hacer algo como, pero no lo se, ni lo probe, 
        //ni creo  que  funcione porque no se que significa lo de Parent.
        myControl2.ImageUrl = "~/Images/1.gif";

      }
      else
      {
         Response.Write("Control no encontrado");
      }

     }  
}
Un saludo
__________________
La nueva red social de quinielas quiniela resultados
Cazaresultados Futbol base en directo

Última edición por triqui; 11/01/2010 a las 06:10
  #6 (permalink)  
Antiguo 11/01/2010, 06:01
 
Fecha de Ingreso: julio-2005
Mensajes: 275
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Formar nombre de instancia a partir de Strings en C#

gracias triqui, probare esta tarde a ver si hay suerte.
  #7 (permalink)  
Antiguo 11/01/2010, 06:09
Avatar de triqui  
Fecha de Ingreso: diciembre-2008
Ubicación: Zaragoza(España)
Mensajes: 624
Antigüedad: 13 años, 1 mes
Puntos: 31
Respuesta: Formar nombre de instancia a partir de Strings en C#

Vale acabo de resolverlo, este es el código espero que te sirva, saludos.

Código:
protected void Button1_Click(object sender, EventArgs e)
    {


        for (int i = 1; i < 4; i++)
        {

            string sMiControl = "Label" + Convert.ToString(i);

           Control myControl1 = FindControl(sMiControl);

            if (myControl1 != null)
            {

                Label MyLabel = (Label)myControl1.Parent.FindControl(sMiControl);
                MyLabel.Text = "Hola";

            }
            else
            {
                Response.Write("Control no encontrado");
            }

        }  
    }
Suerte
__________________
La nueva red social de quinielas quiniela resultados
Cazaresultados Futbol base en directo
  #8 (permalink)  
Antiguo 11/01/2010, 08:45
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 14 años, 4 meses
Puntos: 87
Respuesta: Formar nombre de instancia a partir de Strings en C#

la respuesta de triqui es en web asi que echale un ojo, en winforms no es valida
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #9 (permalink)  
Antiguo 11/01/2010, 08:47
 
Fecha de Ingreso: julio-2005
Mensajes: 275
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Formar nombre de instancia a partir de Strings en C#

Cita:
Iniciado por Peterpay Ver Mensaje
la respuesta de triqui es en web asi que echale un ojo, en winforms no es valida

que diferencias hay??
  #10 (permalink)  
Antiguo 11/01/2010, 09:23
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 14 años, 4 meses
Puntos: 87
Respuesta: Formar nombre de instancia a partir de Strings en C#

muchas, webforms tiene acceso a dom y a los elementos activos de sus formas, winforms no tiene un metodo FindControl explicito
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #11 (permalink)  
Antiguo 11/01/2010, 09:26
 
Fecha de Ingreso: julio-2005
Mensajes: 275
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Formar nombre de instancia a partir de Strings en C#

podria servir esto que he encontrado para winforms??


Código C++:
Ver original
  1. private void set_values()
  2.         {
  3.             Random my_random = new Random();
  4.             for (int i = 1; i < 5; i++)
  5.             {
  6.                 TextBox txtBoxtemp = (TextBox)this.Controls.Find("txtValue" + i, true)[0];//Use the first found TextBox
  7.                 txtBoxtemp.Text = (random.Next(9) + 1) + ""; // get values from 1 to 9
  8.             }
  9.         }
  #12 (permalink)  
Antiguo 11/01/2010, 09:31
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 14 años, 4 meses
Puntos: 87
Respuesta: Formar nombre de instancia a partir de Strings en C#

exactamente
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #13 (permalink)  
Antiguo 11/01/2010, 12:27
 
Fecha de Ingreso: julio-2005
Mensajes: 275
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Formar nombre de instancia a partir de Strings en C#

me funciona perfectamente, ya sabia yo que habria algo para hacerlo...gracias a todos!
  #14 (permalink)  
Antiguo 17/06/2010, 03:56
 
Fecha de Ingreso: junio-2010
Mensajes: 20
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Formar nombre de instancia a partir de Strings en C#

Estoy usando el codigo de Triqui y el FindControl me devuelve null y el label existe, alguien sabe porque puede ser?

Gracias
  #15 (permalink)  
Antiguo 17/06/2010, 04:23
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 14 años
Puntos: 606
Respuesta: Formar nombre de instancia a partir de Strings en C#

Cita:
Iniciado por loretxoanai Ver Mensaje
Estoy usando el codigo de Triqui y el FindControl me devuelve null y el label existe, alguien sabe porque puede ser?

Gracias
Sería de ayuda que copiaras tu código. De todas formas, como consejo, la próxima vez abre un nuevo tema ;)
__________________
Aviso: No se resuelven dudas por MP!
  #16 (permalink)  
Antiguo 17/06/2010, 04:29
 
Fecha de Ingreso: junio-2010
Mensajes: 20
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Formar nombre de instancia a partir de Strings en C#

Gracias por contestar, mi código es prácticamente igual que el del ejemplo, por eso pensaba que alguien igual sabía porque puede fallar.

Gracias :)
String sMiControl = "LUser" + Convert.ToString(j);
Control myControl1 = FindControl(sMiControl);
if (myControl1 != null)
{
Label MyLabel = (Label)myControl1.Parent.FindControl(sMiControl);
MyLabel.Text = "Encontrado";
}
else
{
LUser0.Text = "FALLO";
}

Etiquetas: formar, instancia, nombre, partir, strings
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:45.