C # Как я могу проверить, установлен ли флажок в другой форме?
Вопрос
Я использую C #, и я хотел бы проверить, установлен ли флажок в основной форме, и если да, запустите какой-нибудь код, проблема в том, что я нахожусь в файле класса (файл без формы, правильный ли файл класса?).Какой самый простой способ сделать это?
Спасибо Джейми
Решение
Лучшим вариантом является создание boolean
свойство в форме, которое предоставляет Checked
значение CheckBox
.
public bool OptionSelected
{
get { return checkBox.Checked; }
set { checkBox.Checked = value; } // the set is optional
}
Другие советы
Вам нужна ссылка на форму, и форма должна выставлять флажок (или свойство, которое обращается к флажку).
В этом отношении нет никакой разницы между программированием пользовательского интерфейса и программированием без пользовательского интерфейса.Как бы попросить о Name
свойство a Person
экземпляр из другого класса?Вы получите ссылку на экземпляр и запросите соответствующее свойство.
Таким образом, вам определенно нужна ссылка на форму, и тогда это один из:
bool checked = form.IsAdultCheckbox.Checked;
bool checked = form.IsAdult;
(Где IsAdult
собственность вернулась бы someCheckbox.Checked
.)
Фактические названия свойств здесь могут быть неправильными (например Checked
может не вернуть bool
) но я надеюсь, что вы уловили идею.
Можете ли вы определить интерфейс со свойством, заставить форму реализовать интерфейс и возвращать значение true, если установлен флажок, и передать экземпляр этого интерфейса вашему классу?
Например:
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
}
}
}
Лично мне не нравится использовать set или get .Я сделал это вот так:
if (checkBox.IsChecked.Equals(true))
{
//insert code here
}
вы можете использовать это, у меня это прекрасно работает
if (Convert.ToBoolean(CheckBox1.IsChecked))
{
MessageBox.Show("true");
}
else
{
MessageBox.Show("false");
}