【问题标题】:executing two events consecutively in c#在c#中连续执行两个事件
【发布时间】:2014-01-26 07:08:06
【问题描述】:

我用 C# 编写了一个带有一些控件的表单。在我们离开时调用的其中一个控件上有一个事件。在某些情况下,当框中的值无效时,它会抛出异常(如果 bool 变量为真)。现在的问题是,当焦点在此控件上并且我想关闭表单时,将调用离开此控件的事件并引发异常,该异常是 catch 语句中的 catch 并且不会引发异常,但在该 onclose 事件之后不会打电话,我无法关闭表格。我该怎么办?

    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;
            }
        }
    }

【问题讨论】:

  • 请提供您必须明确问题的代码
  • 只提供与这个问题相关的代码

标签: c# winforms events


【解决方案1】:

你应该删除这一行

  throw;

【讨论】:

  • 在某些情况下我想抛出异常!
  • 但是这个抛出异常导致你无法关闭表单
  • 当 raiseexception 为 false 我也无法关闭表单!
  • 你应该把 e.cancel 改成 false
猜你喜欢
  • 1970-01-01
  • 2020-08-17
  • 2017-06-18
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
相关资源
最近更新 更多