2014-01-26 51 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