C # ¿Cómo puedo verificar si una casilla de verificación está marcada en otro formulario?

StackOverflow https://stackoverflow.com/questions/1410923

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy usando C # y me gustaría verificar si una casilla de verificación en el formulario principal está marcada y, de ser así, ejecutar algún código, el problema es que estoy en un archivo de clase (archivo sin formulario, es archivo de clase correcto?). ¿Cuál es la forma más fácil de hacer esto?

Gracias Jamie

¿Fue útil?

Solución

La mejor opción es crear una propiedad boolean en el formulario que exponga el valor Checked del CheckBox .

public bool OptionSelected
{
    get { return checkBox.Checked; }
    set { checkBox.Checked = value; } // the set is optional
}

Otros consejos

Necesita una referencia al formulario, y el formulario debe exponer la casilla de verificación (o una propiedad que consulte la casilla de verificación).

No hay diferencia entre la programación UI y la programación no UI a este respecto. ¿Cómo pediría la propiedad Name de una instancia de Person de una clase diferente? Obtendría una referencia a la instancia y solicitaría la propiedad relevante.

Entonces definitivamente necesitas una referencia al formulario, y luego es uno de:

bool checked = form.IsAdultCheckbox.Checked;
bool checked = form.IsAdult; 

(Donde la propiedad IsAdult devolvería someCheckbox.Checked .)

Los nombres de propiedad reales pueden estar equivocados aquí (por ejemplo, Checked puede no devolver un bool ) pero espero que se haga una idea.

¿Puede definir una interfaz con una propiedad, hacer que el formulario implemente la interfaz y devuelva verdadero si la casilla de verificación está marcada, y pasar una instancia de esta interfaz a su clase?

Por ejemplo:

interface IMyFormFlag
{
    bool IsChecked { get; }
}

public class MyForm : Form, IMyFormFlag
{
    CheckBox chkMyFlag;

    bool IsChecked { get { return chkMyFlag.Checked; } }
}

public class MyObject
{
    public void DoSomethingImportant(IMyFormFlag formFlag)
    {
        if (formFlag.IsChecked)
        {
            // do something here
        }
    }
}

Personalmente, no me gusta usar set u get. Lo hice así:

if (checkBox.IsChecked.Equals(true))
{
//insert code here
}

puedes usar esto, me funciona bien

    if (Convert.ToBoolean(CheckBox1.IsChecked))
      {
         MessageBox.Show("true");
      }
    else
       {
         MessageBox.Show("false"); 
       }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top