【发布时间】:2017-10-28 11:16:45
【问题描述】:
我有一个表单,它调用另一个将执行操作的表单,如果该操作完成,我在父表单中作为参数放置的标志将在子表单中设置为 true,但如果该操作未完成,标志保持为假。
父窗体中的代码:
bool flag = false;
new ChildForm(flag).ShowDialog();
if(flag)
{
//some code that depends on that flag be true
}
子窗体中的代码:
bool flag;
public ChildForm(bool flag)
{
InitializeComponent();
this.flag = flag;
}
private SomeMethod()
{
//some code
flag = true;
this.Close();
}
调试一下看到子窗体的flag设置为true后,父窗体的flag也为true,但是子窗体关闭后程序返回执行父窗体的代码,flag又变回了假的。
发生了什么事?
【问题讨论】:
-
在这个代码示例中,if(flag) 正在进入是不可能的
-
@BennoDual 怎么样?子窗体中的方法将 flag 设置为 true。
-
它将 ChildForm 中的标志设置为 true - 这对父表单中的变量没有影响。
-
@BennoDual 正如我所说,调试器显示父标志为真,这就是我不明白的原因。
标签: c# parameters boolean flags