C # закрытие еще одной проблемы с формой, Close ();не работает - PullRequest
3 голосов
/ 16 мая 2011

У меня есть этот код в форме1

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 ]

2 голосов
/ 16 мая 2011

Скорее всего, проблема с потоками. Попробуйте это:

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;
  }
}
0 голосов
/ 29 ноября 2015

Я просто часами думал, почему моя форма не закрывается.Оказывается, я забыл проверить все в

Debug-> Exceptions

, поэтому один из обработчиков событий молча выдал исключение NullPointerException, которое в противном случае было обнаружено платформой.Я предполагаю, что установка свойства Cancel аргументов события в значение true и последующее его установка в false, очевидно, не сработают (когда я исправил NullPointer, все снова заработало нормально.).

...