我有一个简单的函数,它返回是否选中复选框,另一个类的另一个方法使用此信息。
每当我改变" Checked"在运行表单之前将属性设置为false,我的代码按预期工作,并将checked属性的boolean变量视为false。但是,如果我在窗体实际运行时尝试更改复选框,则无论是否选中该框,我的代码始终将checked属性视为true。
我的代码不是Form1_Load一次性的东西,它是每次单击按钮时调用的函数。 (当然,在复选框未被遮挡后单击了此按钮,它仍然将复选框选中的变量视为true,即使它应该为false。)
字面意思我的代码:
(我知道这看起来像是一种奇怪的方法来检查它,但由于类到类的引用问题需要它)
public bool Check1()
{
check1 = this.checkBox1.Checked;
return check1;
}
检查1();无论是否选中checkBox1,始终返回true。但同样,如果我在运行表单之前取消选中该复选框,它将返回false。
有任何建议让它正确更新吗?
编辑:
Block_Map_Array.Form1 f = new Block_Map_Array.Form1();
在新实例中调用它。
答案 0 :(得分:0)
假设您在表单类中有类似的内容:
public partial class Form1 : Form
{
private bool check1;
public bool Check1()
{
check1 = this.checkBox1.Checked;
return check1;
}
// rest of class omitted
}
并且您希望其他类可以访问UI表单的此实例方法,您需要为表单提供一种将自身传递给其他类的方法,例如:
class Block_Map_Array
{
private Form1 f;
public Block_Map_Array(Form1 uiInstance)
{
this.f = uiInstance;
}
public void SomeMethod()
{
if (f.Check1())
{
// do something...
}
}
// rest of class omitted...
}
然后,当您从form1
实例化此类时,您可以执行以下操作:
private void Form1_Load(object sender, EventArgs e)
{
Block_Map_Array foo = new Block_Map_Array(this);
foo.SomeMethod();
}
当然,这不是最好的设计。通常,您会将一些数据直接传递给表单中的方法,而不是整个表单实例。