C # ¿Cómo puedo verificar si una casilla de verificación está marcada en otro formulario?
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
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");
}