C sharp - Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

 
Vista:
sin imagen de perfil

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Metathram (8 intervenciones) el 22/01/2018 01:24:35
Muy buenas compañeros, llevo varios días dándole vueltas a la cabeza y no consigo sacar el código necesario para lo que estoy realizando.

Os comento, la idea es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
if (TarjetaSIMDAL.IdDelEnlace(0) > 0)
{
	btnCLP0.Font = new Font(btnCLP0.Font.FontFamily, 7);
	btnCLP0.Text = ("  CLP 00:   "+ TarjetaSIMDAL.IdDelEnlace(0));
	btnCLP0.BackColor = Color.Coral;
}
else
{
	btnCLP0.Font= new Font(btnCLP0.Font.FontFamily, 7);
	btnCLP0.Text = ("  CLP 00:  No Asignado");
	btnCLP0.BackColor = Color.LightGreen;
}

Este código funciona, lo malo es que los botones (btnCLP0) en este caso son una sucesión de botones que según lo que tengamos en la db por norma general superará los 100 botones.

Entonces lo que tenemos que realizar es lo siguiente: (ponemos 99 botones por poner un ejemplo).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for (int Botones = 0; Botones <= 99; Botones++)
{
    if (TarjetaSIMDAL.IdDelEnlace(Botones) > 0) //Ya se que esto que viene a continuación no funciona.
    {
        var crtl0 = string.Format("btnCLP{0}.Font = new Font(btnCLP{0}.Font.FontFamily, 7)", Botones);
        var crtl1 = string.Format("btnCLP{0}.Text = (  CLP {0}:    + TarjetaSIMDAL.IdDelEnlace({0}))", Botones);
        var crtl2 = string.Format("btnCLP{0}.BackColor = Color.Coral", Botones);
 
    }
    else
    {
        var crtl0 = string.Format("btnCLP{0}.Font = new Font(btnCLP00.Font.FontFamily, 7)", Botones);
        var crtl1 = string.Format("btnCLP{0}.Text = (  CLP {0}:  No Asignado)",Botones);
        var crtl2 = string.Format("btnCLP{0}.BackColor = Color.LightGreen", Botones);
 
    }
}

Pues aquí tengo el problema, quiero que me vaya modificando el {0} por la variable botones, he probado con comillas, cambiando mil cosas y no doy con la tela. (Partimos de la base que ese código ni siquiera lo ejecuta)

Alguien me puede lanzar un cable?

Muchas gracias por vuestra ayuda, Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por omar (25 intervenciones) el 22/01/2018 01:37:26
saludos, instala anydesck y te guió en el problema que tienes

anydesck es para poder dar soporte remoto de pc a pc

envías el id y me conecto

estaré a tu ordenes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Metathram (8 intervenciones) el 22/01/2018 01:42:42
Buenas omar:

Lamento no instalar el Anydesk, no cedo el acceso remoto a mi pc.

Si me pudieras explicar con el ejemplo que os he puesto, no creo que sea muy difícil, lo malo es que no he dado con la manera de hacerlo.

Muchas gracias y un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 356
Plata
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Miguel (160 intervenciones) el 22/01/2018 04:12:24
Hola,

Según entiendo creas botones en tiempo de ejecución basado en registros de tu base de datos. Para poder manipularlos (junto con sus eventos) sugiero colocarlos en un array (o List) desde su creación y luego hacer referencia directa. También puedes usar el método Control.Find(string, bool) para buscar controles usando la propiedad Name.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Metathram (8 intervenciones) el 22/01/2018 06:43:02
Buenas compañero y muchas gracias por tu comentario:

El problema real es que no se como """encomillar""" las lineas de abajo, y realizar la ejecución de la linea "("btnCLP{0}.Text = ( CLP {0}: No Asignado)",Botones)", puesto que si pudiera ejecutarla estaría todo perfecto, pero no se como realizar la ejecución de la linea, por ejemplo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 356
Plata
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Miguel (160 intervenciones) el 22/01/2018 06:58:29
Ok, creo que te refieres a esto:

1
string.Format("btnCLP{0}.Text = (\"CLP {0}: No Asignado\")", Botones);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Metathram (8 intervenciones) el 22/01/2018 09:07:17
Buenas Miguel:

En teoría todo perfecto porque las líneas no me dan error, pero tengo una duda.

Por algún extraño motivo no me "ejecuta" el código de las líneas, las comentadas son las que pongo y funcionan correctamente, las no comentadas son las que he puesto como me has dicho indicando las comillas como /".

Un saludo.

string.Format("btnCLP{0}.Font = new Font(btnCLP{0}.Font.FontFamily, 7)", Botones);
//btnCLP0.Font = new Font(btnCLP0.Font.FontFamily, 7);
string.Format("btnCLP{0}.Text = (\" CLP {0}: \" + TarjetaSIMDAL.IdDelEnlace(0))", Botones);
//btnCLP0.Text = (" CLP 00: "+ TarjetaSIMDAL.IdDelEnlace(0));
string.Format("btnCLP{0}.BackColor = Color.Coral", Botones);
//btnCLP0.BackColor = Color.Coral;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Metathram (8 intervenciones) el 22/01/2018 09:17:17
Acabo de comprobar que una cosa tan sencilla como esta, no ejecuta el codigo:

String.Format("MessageBox.Show(Convert.ToString(Botones));");

también he probado como he visto en algunas páginas, asignándole el String.Format a una variable, pero sigue sin ejecutarse la linea.

String.Format("MessageBox.Show(Convert.ToString(Botones))");

A ver si me decís como las ejecuto que llevo un montón de horas y no doy con la tela.

Hay que meter algún using? lo dudo, verdad?

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 356
Plata
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Miguel (160 intervenciones) el 22/01/2018 12:24:00
Disculpa, creo que no estoy entendiendo. ¿Quieres ejecutar el código que se encuentra en una cadena de texto (cargar código en tiempo de ejecución, como si fuera algún eval)?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Metathram (8 intervenciones) el 22/01/2018 12:43:23
Buenas Miguel:

----->>>>> Quiero ejecutar este código: string.Format("btnCLP{0}.Font = new Font(btnCLP{0}.Font.FontFamily, 7)", Botones);

Exactamente igual que si fuera este en el caso de que la variable botones fuera 0:

//btnCLP0.Font = new Font(btnCLP0.Font.FontFamily, 7);

Aqui lo que muestro es la linea con el string format y las comillas, y comentada la linea real que debería de ejecutarse al llegar hay.



string.Format("btnCLP{0}.Text = (\" CLP {0}: \" + TarjetaSIMDAL.IdDelEnlace(0))", Botones);
//btnCLP0.Text = (" CLP 00: "+ TarjetaSIMDAL.IdDelEnlace(0));

string.Format("btnCLP{0}.BackColor = Color.Coral", Botones);
//btnCLP0.BackColor = Color.Coral;


Requerda que Botones, es la variable que tiene que ir cambiando los nombres de los textbox ... btnCLP{0}, aqui {0} es botones. Que en el ejemplo es btnCLP0.Text porque en este caso la variable botones sería 0. o 99 por ejemplo.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 356
Plata
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Miguel (160 intervenciones) el 22/01/2018 19:56:24
Creo que tienes una confusión, el String.Format lo único que hace es crear cadenas de texto con un respectivo formato. Como te dije anteriormente, para modificar las propiedades de los controles tienes que hacer referencia a los objetos (que en un principio puedes colocar en un array).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Poner nombre a TextBox y realizar consultas creando el nombre con un FOR.

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 22/01/2018 20:38:48
Pues creo que la confusión es muy grande. Por el hecho que la variable se llame botones, no significa que sea un botón.

Ahora, lo que estás haciendo es un for de 1 a 100, entonces tu variable entera se llama botones, ahora, como pretendes ponerte un texto a un número?, eso no es un objeto como para que tenga propiedades.

Si quieres tener botones, tendrías que generarlos en tiempo de ejecución, pero como objectos de tipo button, con lo cual tendrá cada uno de ellos todas las propiedades que tiene un boton, como son Text, backcolor, forecolor y todo eso, pero un número crees que podrá tener todo eso?.

Creo que tienes que analizar bien lo que estás haciendo y no perder mas tiempo, ya que a un número jamás le vas a poder asignar un text.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar