2014-01-26 19 views
0

我用c#編寫了一個窗體,並帶有一些控件。當我們離開的時候,有一個事件被調用。在某些情況下,當框中的值無效時,它會拋出異常(如果bool變量爲true)。現在的問題是,當重點放在這個控件上,我想關閉表單時,將會調用離開該控件的事件並拋出一個異常,這是catch語句中的catch,並且不會拋出異常,但在此之後onclose事件是不會打電話的,我不能關閉表格。我該怎麼辦?在c中連續執行兩個事件#

private void SetSelectedDateTime(CancelEventArgs e, bool raiseException) 
    { 
     try 
     { 
      var newval = UpdateDateTime(); 
      var rawText = Text.Replace("/", "").Replace(":", "").Replace("_", "").Replace(" ", ""); 
      if ((Text.Contains(PromptChar) && rawText != string.Empty) || (!Text.Contains(PromptChar) && newval == null)) 
      { 
       throw new SgException(ControlMessages.InvalidDate); 
      } 
      else 
      { 
       selectedDateTime = AdjustDateTime(selectedDateTime); 
       if (newval != selectedDateTime) 
       { 
        selectedDateTime = newval; 
        UpdateText(newval); 
        OnSelectedDateTimeChanged(); 
        EndEditBindings(); 
       } 
      } 
     } 
     catch (Exception) 
     { 
      e.Cancel = true; 
      if (raiseException) 
      { 
       this.Focus(); 
       throw; 
      } 
     } 
    } 
+0

請提供你必須作出明確問題的 –

+0

代碼是如此巨大的代碼! – fasadat

+0

只提供與此問題相關的代碼 –

回答

1

你應該刪除此行

throw; 
+0

在某些情況下我想拋出異常! – fasadat

+0

但是這個拋出異常導致您無法關閉表格 –

+0

當提升失誤時我也無法關閉表格! – fasadat