我使用MVC编程方法,其中控制器引用它正在控制的UserControl
。
点击UserControl
上的按钮时,我在控制器中调用以下代码:
class MyController {
UserControl targetControl;
public UserControl TargetControl {
get {
if (targetControl == null) { targetControl = new UserControl();}
return targetControl;
}
}
...
...
...
public void OnButtonClick() {
using (OpenFileDialog ofd = new OpenFileDialog()) {
if (ofd.ShowDialog() == DialogResult.OK) {
using (MyForm2 f2 = new MyForm2()) {
f2.ShowDialog();
// when reaching this, targetControl is null....
f2.Dispose();
}
}
}
}
}
我无法弄清楚为什么会出现这种情况,特别是targetControl.InvokeRequired
返回会丢失,我理解这是告诉我实际上是在UI线程上执行....
更新
某些下游代码将UserControl
的引用显式设置为null,这与ShowDialog
无关......