none
Contar si se cumple condición bloquear controles RRS feed

  • Pregunta

  • Hola a todos buenas noches.

    Tengo un pequeño proyecto escolar (Pizzas),  trata de tomar la orden de un cliente tengo problemas para realizar lo siguiente:

    Tengo tres Groupbox.

    GroupBox1:

    Cuatro radio buttons, en el cual se selecciona el tamaño de la pizza.

    GroupBox2:

    Cuatro radio buttons, para seleccionar la cantidad de ingredientes.

    Groupbox3:

    Ocho checkbox, para seleccionar los ingredientes que llevara la pizza. 

    Aquí tengo problemas ya que necesito ir contabilizando la cantidad de checkbox que se van activando y compararlo contra la cantidad de ingredientes seleccionados. Es decir si fueron cuatro ingredientes los selccionados ir contando cuando se van seleccionando los ingredientes y cuando se cumpla la cantidad entonces bloquear los Checkbox.

    Tendría que usar un for, pero no se en que evento ponerlo, encontré este trozo de código pero no he encontrado donde agregarlo.

      {
                {
                    int contador = 0;
                    foreach (Control control in this.Controls)
                    {
                        if (control is CheckBox)
                        {
                            if ((control as CheckBox).Checked == true)
                            {
                                contador++;
                            }
                            MessageBox.Show("Ingredientes completados sus ingredientes son:"+ contador);
                        }
                    }
                }
            }

    Espero me puedan ayudar.

    Saludos

    DS


    Aprendiz de todos maestro de nadie. Saludos desde Cd. Juarez Chihuahua Mexico. DS.

    jueves, 7 de junio de 2018 3:20

Respuestas

  • No, lo que necesita es un contador.

    //Agregue esta propiedad a nivel de fomulario.
    private byte IngredientesSeleccionados { get; set; }
    
    //No sé cómo obtiene el # de ingredientes a usar, pero almacénelo en esta otra propiedad.
    private byte TotalIngredientes { get; set; }
    
    //Luego utilice este controlador de evento para el click de todos los checks.
    private void IngredienteCheck(object sender, EventArgs e)
    {
        CheckBox cb = sender as CheckBox;
        IngredientesSeleccionados += cb.Checked ? 1 : - 1;
        //Ahora habilitamos o deshabilitamos todos aquellos checkboxes que NO están seleccionados.
        ActualizarEstadoCheckBoxes();
    }
    
    private void ActualizarEstadoCheckBoxes()
    {
        foreach (CheckBox cb in GroupBox3.Controls.OfType<CheckBox>())
        {
            if (!cb.Checked)
            {
                cb.Enabled = IngredientesSeleccionados < TotalIngredientes;
            }
        }
    }


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    • Marcado como respuesta Dany Solis jueves, 28 de marzo de 2019 13:01
    jueves, 7 de junio de 2018 3:57
    Moderador