none
Recorrer array de tipo string con nombre de objecto tipo boton RRS feed

  • Pregunta

  • Hola a todos espero me puedan ayudar, ya que tengo varias horas atorado con este detalle,

    Tengo un array del tipo string que lleno con una consulta a mi base de datos, los valores del array son los nombres (propiedad name) de los botones de mi menu principal, lo que deseo hacer es recorrer ese array y por cada valor que me encuentre, el boton correspondiente al nombre encontrado lo deshabilite (osea nombredelboton.enabled = false), entiendo que debo hacer un foreach a mi array, pero no se que debo poner dentro para lograr el objetivo.

    De antemano gracias programadores.


    A_R_I_E_S

    viernes, 22 de junio de 2018 2:44

Respuestas

  • Gracias por tu respuesta jose,

    Logre hacerlo de la siguiente manera, veo que tu utilizaste linq.

    for (int i = 0; i < arrayAccesos.Length; i++)
                {
                    foreach (var item in this.Controls)
                    {
                        if (item.GetType() == typeof(Button))
                        {
                            if (((Button)item).Name == arrayAccesos[i])
                            {
                                ((Button)item).Enabled = false;
                            }
                        }
                    }
                }

    De todos modos agradezco tu apoyo.

    Saludos.



    A_R_I_E_S

    • Marcado como respuesta A_r_i_e_s viernes, 22 de junio de 2018 22:27
    viernes, 22 de junio de 2018 22:26

Todas las respuestas

  • Yo más bien haría un foreach de los botones.

    //Imaginaré que el arreglo de nombres de botón se llama arrBotones.
    Controls.OfType<Button>().Where(b => b.Contains(b.Name)).foreach(b => b.Enabled = false);

    Esto asumiendo que es un proyecto de Windows Forms.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    viernes, 22 de junio de 2018 3:55
    Moderador
  • Una pequeña corrección: si suponemos que el arreglo de nombres se llama arrBotones, entonces hay que usar arrBotones en lugar de la b en el Contains:

    Controls.OfType<Button>().Where(b => arrBotones.Contains(b.Name)).foreach(b => b.Enabled = false);

    viernes, 22 de junio de 2018 14:16
    Moderador
  • Gracias por tu respuesta jose,

    Logre hacerlo de la siguiente manera, veo que tu utilizaste linq.

    for (int i = 0; i < arrayAccesos.Length; i++)
                {
                    foreach (var item in this.Controls)
                    {
                        if (item.GetType() == typeof(Button))
                        {
                            if (((Button)item).Name == arrayAccesos[i])
                            {
                                ((Button)item).Enabled = false;
                            }
                        }
                    }
                }

    De todos modos agradezco tu apoyo.

    Saludos.



    A_R_I_E_S

    • Marcado como respuesta A_r_i_e_s viernes, 22 de junio de 2018 22:27
    viernes, 22 de junio de 2018 22:26