C# wpf-notifyIcon-鼠标事件-识别鼠标按钮

C# wpf-notifyIcon-鼠标事件-识别鼠标按钮,c#,wpf,mouseevent,notifyicon,C#,Wpf,Mouseevent,Notifyicon,我在WPF应用程序中使用Winforms中的Notify图标。 Bellow是我的事件处理程序的一部分: private void notifyIcon_Logger_MouseDown( object sender, EventArgs e ) { var st = e.ToString(); ... 我可能不会将e参数设为MouseEventArgs,因为编译器说它不匹配。但即便如此,我看到st是“System.Windows.Forms.MouseEventArgs”。怎

我在WPF应用程序中使用Winforms中的Notify图标。 Bellow是我的事件处理程序的一部分:

private void notifyIcon_Logger_MouseDown( object sender, EventArgs e )
{
        var st = e.ToString();
...
我可能不会将e参数设为MouseEventArgs,因为编译器说它不匹配。但即便如此,我看到st是“System.Windows.Forms.MouseEventArgs”。怎么会这样

我将e固定在IDE表面上,以便于调试,我看到它有一个成员按钮。我看到像这样的东西

Button = Right
但如果我试一下e.按钮,我会 错误CS1061:“EventArgs”不包含“Button”的定义
这些怎么可能呢?更重要的是,如何识别鼠标按钮?

混合使用WPF和Winforms有时会很棘手

有两种类型称为MouseEventArgs。一个是System.Windows.Input命名空间中的WPF版本,另一个是System.Windows.Forms命名空间中的Winforms版本

通过简单地将其转换为MouseEventArgs,编译器将使用WPF表单,因为这是WPF应用程序,但您需要Winforms版本,因为此特定回调用于Winforms控件。因此,只需在回调定义中使用正确的名称空间对其进行限定

private void notifyIcon_Logger_MouseDown( object sender, System.Windows.Forms.MouseEventArgs e )
{
        var st = e.ToString();
...

您必须将EventArgs强制转换为适当的扩展类型。这就是为什么会出现此错误,因为EventArgs只是基本类型,实际上没有名为Button的属性。要使参数类型匹配,只需完全限定表单类型,因为wpf还定义了MouseEventArgs类型。@BionicCode以及如何做到这一点?如果我简单地尝试((MouseEventArgs)e)。按钮,我当然会得到一个错误。我不知道你的目的是什么,但也许这会有用:什么错误?强制转换为“System.Windows.Forms.MouseEventArgs”您现在只是强制转换为System.Windows.Input.MouseEventArgs,而此类型没有名为Button的属性。您使用了错误的名称空间。