gpt4 book ai didi

wpf - 在 WPF 中将 TouchMove 事件映射到 MouseMove 事件

转载 作者:行者123 更新时间:2023-12-04 05:19:36 24 4
gpt4 key购买 nike

我正在 WPF 应用程序中实现简单的拖放功能。我希望此应用程序既可以在不支持触摸的台式机上运行,​​也可以在仅支持触摸的平板电脑上运行。

目前我有一个 MouseMove 和 TouchMove 处理程序,它们都实现相同的逻辑(启动 DoDragDrop())。

如何将输入从触摸路由到鼠标处理程序或反之以减少冗余代码?此外,如何将简单的点击路由到点击事件?

最佳答案

我刚刚做了一个快速测试,一种方法是创建一个全局事件处理程序。

由于 TouchEventArgsMouseButtonEventArgs 派生自 InputEventArgs,您的全局处理程序将只实现 InputEventArgs

    /// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

//private void Button_TouchMove(object sender, TouchEventArgs e)
//{
// TouchEventArgs derives from InputEventArgs
//}

// private void Button_MouseMove(object sender, MouseButtonEventArgs e)
//{
// MouseButtonEventArgs derives from InputEventArgs
//}

private void GlobalHandler(object sender, InputEventArgs e)
{
// This will fire for both TouchEventArgs and MouseButtonEventArgs

// If you need specific information from the event args you can just cast.
// e.g. var args = e as MouseButtonEventArgs;
}

}

Xaml:

<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid >
<Button MouseMove="GlobalHandler" TouchMove="GlobalHandler"/>
</Grid>
</Window>

希望对你有帮助

关于wpf - 在 WPF 中将 TouchMove 事件映射到 MouseMove 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com