将事件附加到文本框

时间:2013-11-30 07:03:44

标签: c# wpf

如何附加到文本框事件Mouse.PreviewMouseDownOutsideCapturedElementEvent。

AddHandler(Mouse.PreviewMouseDownOutsideCapturedElementEvent,
                new EventHandler<MouseButtonEventArgs>(HandleClickOutsideOfControl), true); contrstruction is not working.

我试图在textbox_loaded事件中执行此操作。 我得到了例外

"An unhandled exception of type 'System.ArgumentException' occurred in PresentationCore.dll

Additional information: Handler type is mismatched."

2 个答案:

答案 0 :(得分:2)

试试这个:

AddHandler(Mouse.PreviewMouseDownOutsideCapturedElementEvent,
            new MouseButtonEventHandler(HandleClickOutsideOfControl), true);

您还注意到HandleClickOutsideOfControl的签名应该是这样的:

void HandleClickOutsideOfControl(object sender, MouseButtonEventArgs e){...}

您的错误是因为您认为通用委托EventHandler<MouseButtonEventArgs>是相同的并且可以替换MouseButtonEventHandler,但它们是完全不同的委托。

答案 1 :(得分:2)

此错误是因为可以使用无效参数调用方法。在这种情况下,可能会抛出ArgumentException。例外使用派生类型来表示其含义。但这并没有给他们额外的能力。

使用此:

AddHandler(Mouse.PreviewMouseDownOutsideCapturedElementEvent,
            new MouseButtonEventHandler(HandleClickOutsideOfControl), true);