C#关闭另一个表单问题,Close();不起作用

时间:2011-05-16 08:50:24

标签: c# .net winforms formclosing

我在form1上有这段代码

TimerMode f2 = new TimerMode();
f2.show();

现在我试图在某个时间点使用此代码,但没有任何反应? Cmd =关闭

public void DoActions(string Cmd)
{
  switch(Cmd){

  case"Open":
      TimerMode f2 = new TimerMode();
      f2.show()
      break;
  case"Closing":
       f2.Close();
       break;
}
}

你知道为什么不关闭吗?。

我真的希望它关闭它。

在vb6中我用这个

unload form2

2 个答案:

答案 0 :(得分:2)

最有可能是线程问题。试试这个:

f2.Invoke((MethodInvoker)(() => f2.Close()));

如果不起作用,请使用以下修改:

public TimerMode f2 = new TimerMode();
public void DoActions(string Cmd)
{
  switch(Cmd){    
  case"Open":          
      f2.show()
      break;
  case"Closing":
       f2.Close();
       break;
  }
}

答案 1 :(得分:0)

我花了好几个小时想知道为什么我的表格不会关闭。事实证明,我忘了检查

下的所有内容

调试 - >例外

所以其中一个事件处理程序默默地抛出一个NullPointerException,否则会被Framework捕获。我想将事件参数的Cancel属性设置为true并将其设置为false,之后显然没有做到这一点(当我修复NullPointer时,一切都恢复正常。)。