题
我正在使用C#,我想检查是否检查了主窗体上的复选框,如果是,运行一些代码,问题是我在一个类文件中(没有窗体的文件,是类文件正确吗?)。最简单的方法是什么?
由于 杰米
解决方案
最好的选择是在Form上创建一个 boolean
属性,该属性公开 CheckBox
的 Checked
值。
public bool OptionSelected
{
get { return checkBox.Checked; }
set { checkBox.Checked = value; } // the set is optional
}
其他提示
您需要对表单的引用,并且表单必须公开复选框(或查询复选框的属性)。
在这方面,UI编程和非UI编程之间没有区别。如何从另一个类中请求 Person
实例的 Name
属性?您将获得对该实例的引用,并询问相关属性。
所以你肯定需要对表单的引用,然后它是以下之一:
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");
}
不隶属于 StackOverflow