WPF将MouseDown和TouchDown结合到同一事件中

Car*_*ine 5 c# wpf mouseevent touch

我正在开发一个应用程序,将用于带触摸屏的笔记本电脑上.因此,MouseDown事件基本上是在做同样的动作,应该怎么做.

我写的代码是这样的 -

XAML

<Button MouseDown="Button_OnMouseDown" TouchDown="Button_OnTouchDown"/>
Run Code Online (Sandbox Code Playgroud)

C#

private void Button_OnMouseDown(object sender, MouseButtonEventArgs e)
{
    Action();
}
private void Button_OnTouchDown(object sender, TouchEventArgs e)
{
    Action();
}
private void Action()
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?任何反馈都表示赞赏.

Roh*_*ats 12

使eventArgs更通用.用来EventArgs代替MouseEventArgs和TouchEventArgs.

private void Button_OnMouseDownOrTouchDown(object sender, EventArgs e)
{
    Action();
}
Run Code Online (Sandbox Code Playgroud)

现在你可以从XAML挂钩到同一个事件:

<Button MouseDown="Button_OnMouseDownOrTouchDown" 
        TouchDown="Button_OnMouseDownOrTouchDown"/>
Run Code Online (Sandbox Code Playgroud)

这就是代表们的反差异.了解更多关于这里.

委托可以与具有类型参数的方法一起使用,该类型是委托签名参数类型的基本类型.使用逆变,您可以使用一个事件处理程序而不是单独的处理程序.例如,您可以创建一个接受EventArgs输入参数的事件处理程序,并将其与Button.MouseClick事件一起使用,该事件将MouseEventArgs类型作为参数发送,并且还使用发送KeyEventArgs参数的TextBox.KeyDown事件.