【问题标题】:Why is an exception being raised when I mark a RoutedEventArgs event as Handled?当我将 RoutedEventArgs 事件标记为已处理时,为什么会引发异常?
【发布时间】:2012-11-14 18:23:43
【问题描述】:

我正在尝试将事件标记为已处理,但尝试这样做时会引发异常。

我有以下函数在TextBoxLostFocus 事件上被调用:

private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
   // ...
   // do something
   // ...

   e.Handled = true;
}

但是,一旦执行e.Handled = true,就会引发以下异常:

“System.InvalidOperationException”类型的未处理异常 发生在 PresentationCore.dll 中

附加信息:每个 RoutedEventArgs 必须有一个非 null RoutedEvent 与之关联。

我尝试将 e.Handled 行移到函数中的其他代码之前,但这没有帮助。

为什么会引发异常以及有哪些可能的解决方法?

【问题讨论】:

  • 你查看e有哪些属性了吗?
  • @Bob.:是的。它确实具有允许我获取或设置值的 Handled 属性。
  • 听起来e 在运行时为空。不知道为什么,但你能添加一个断点并检查吗?
  • @RickB:你是对的。我从代码中的其他地方将该函数称为TextBox_LostFocus(sender, new RoutedEventArgs()),因此它不起作用。我已经删除了函数调用,它现在可以工作了。您应该将其添加为答案,以便我接受。谢谢!

标签: c# wpf wpf-controls


【解决方案1】:

想通了。 TextBox_LostFocus 正在从应用程序的其他地方调用,事件参数为 null

因此,对于对 TextBox_LostFocus 的某些函数调用,e.Handled 不起作用(因为 e 为空)但在其他一些场景中起作用(当它实际被框架调用时)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-26
    • 2023-03-25
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多