Hello拖放粉丝,
任何人都可以解释为什么在我的UWP应用程序中使用拖放时看到较长的延迟时间吗?
我编写了一个测试应用程序,其中仅包含拖放消息处理程序以及用于比较的指针处理程序。这是代码...
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
grid1.AllowDrop = true;
grid1.DragOver += Grid1_DragOver;
grid1.Drop += Grid1_Drop;
grid1.DragLeave += Grid1_DragLeave;
grid1.PointerEntered += Grid1_PointerEntered;
grid1.PointerExited += Grid1_PointerExited;
}
// Drag Handlers ************************
private void Grid1_DragOver(object sender, DragEventArgs e)
{
msgFromPointer.Text = " drag/drop item has entered";
e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Copy;
Debug.WriteLine("in grid1 drag over handler");
}
private void Grid1_DragLeave(object sender, DragEventArgs e)
{
msgFromPointer.Text = "";
}
private void Grid1_Drop(object sender, DragEventArgs e)
{
Debug.WriteLine("in grid1 drop handler");
}
// pointer handlers *******************
private void Grid1_PointerEntered(object sender, PointerRoutedEventArgs e)
{
msgFromPointer.Text = "POINTER has entered";
}
private void Grid1_PointerExited(object sender, PointerRoutedEventArgs e)
{
msgFromPointer.Text = "";
}
[拖放到我的应用程序时,在我的应用程序收到dragOver消息之前,似乎有大约1/2秒的延迟。相比之下,pointerOver消息似乎几乎与指针移动同时到达。使用触摸屏或鼠标时,慢速行为是相同的。这是有关行为的视频...
我正在使用的PC带有触摸屏,我想知道是否存在某种形式的触摸“驱动程序”或过滤器,这会拖慢拖放消息的速度。我尝试了很多Windows配置设置,例如鼠标和显示设置,但没有任何更改。 PC是带有最新驱动程序的Dell Inspiron 3593。我的Windows 10版本是1903,内部版本18362.836
我正在开发的应用程序需要大量的拖放操作,这种缓慢的行为使用户界面非常困难。有点像尝试以1/2秒的延迟进行电话对话。
有什么想法吗?
丹
DragOver
事件在应用程序确定当前指针下的元素是潜在的放置目标时触发。
这需要将鼠标指针悬停一段时间。这可能是您认为延迟的原因。
您可以尝试DragEnter
事件,该事件早于DragOver
触发。
谢谢