gpt4 book ai didi

wpf - 右键单击 + 左键单击被视为拖放

转载 作者:行者123 更新时间:2023-12-05 07:54:20 25 4
gpt4 key购买 nike

我有一个带有 StackPanel 作为 ListView 项的 ListView。 StackPanel 有一个右键单击时显示的上下文菜单。我可以使用拖放操作重新排列 StackPanel 顺序。

问题是,当我选择并右键单击显示的 StackPanel (ListViewItem) 上下文菜单时,然后我单击另一个 StackPanel(其他 ListViewItem),DragEnter、DragOver 和 DragLeave 事件被触发。

简单的右击和左击操作被解释为拖放。我尝试将鼠标右键 Up 和 Down 事件设置为 handled true 但没有用。如何区分这种情况与真正的拖放操作?

最佳答案

如果您还没有这样做……您可以将初始鼠标位置存储在 PreviewMouseLeftButtonDown 上,并使用 PreviewMouseMove 来确定用户是否正在进行拖放操作。下面是一些示例代码:

private static void OnPreviewMouseLeftButtonDown( object sender, MouseButtonEventArgs e )
{
// Store the mouse position
m_StartPoint = e.GetPosition( null );
}

private static void OnPreviewMouseMove( object sender, MouseEventArgs e )
{
Point mousePos = e.GetPosition( null );
Vector diff = m_StartPoint - mousePos;

if ( e.LeftButton == MouseButtonState.Pressed &&
( Math.Abs( diff.X ) > SystemParameters.MinimumHorizontalDragDistance || Math.Abs( diff.Y ) > SystemParameters.MinimumVerticalDragDistance ) )
{
// Dragging ...
}
}

关于wpf - 右键单击 + 左键单击被视为拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31544638/

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