从外部类设置复选框值
本文关键字:复选框 设置 从外部 | 更新日期: 2023-09-27 18:10:08
我有外部类做一些工作与我的形式。我有一些错误,我们无法处理。
我的第一个变种
mainForm.CheckBox1.Checked = true;
它不工作,出现错误
跨线程操作无效:控制'CheckBox1'从创建它的线程以外的线程访问
所以我尝试了下面的帖子Stackoverflow问题1但是当我写
mainForm.CheckBox1.IsCheked = true
编译器给出一个错误
错误是"System.Windows.Forms"。Control'没有包含'IsChecked'的定义,也没有扩展方法'IsChecked'接受类型为'System.Windows.Forms '的第一个参数。Control'可以找到(您是否缺少using指令或程序集引用?)
我看到并找到了答案问题2
但是我不能强制转换对象因为当我写
时(CheckBox)mainForm.CheckBox1.IsCheked = true
它给出了一个错误,无法找到名称空间或名称空间(您是否缺少using指令或程序集引用?)我有using System.Windows.Forms;
在课堂的开始。
我是c#的初学者,所以你可以给我一些建议我做错了什么?
如果我理解正确,你有几个选择…静态函数没有关联的实例,所以它们不知道你的复选框是什么,如果你想保留你的静态函数,那么你需要将复选框传递给你的静态函数,尽管这不是很实际。
public static void SetCheck(Checkbox c, bool value)
{
c.Checked = value;
}
这是不实际的原因是,如果你知道复选框,那么你可能只是设置复选框,你可以在你的主窗体上提供一个Checked属性,只允许你的复选框的复选值被改变。
public bool IsMyCheckboxChecked
{
get{ return checkBox1.Checked;}
set{ checkBox1.Checked = value;}
}
如果这是你想设置的父窗体,你可以通过
访问它 ((MainForm)this.ParentForm).IsMyCheckboxChecked = true
编辑作为方法
public void SetCheckbox(int num, bool state)
{
checkboxList[num].Checked = state;
}
为第二个类创建一个带CheckBox参数的构造函数。
private readonly CheckBox _externalCheckBox = null;
public SecForm(CheckBox externalCheckBox)
{
_externalCheckBox = externalCheckBox;
InitializeComponent();
}
所以在mainForm中创建一个SecForm的实例,并为它传递复选框,并在SecForm中更改Checked Property。
private void ChangeCheck(bool value)
{
_externalCheckBox.Checked = value;
}