我正在使用C ++开发Windows UWP应用程序。我想添加一个按钮,可以左键单击或右键单击并执行相应的任务。
该按钮在使用鼠标的普通设备上完美运行。不幸的是,在触摸屏上,如果用户按下按钮,则会触发左键单击和右键单击事件。
我正在使用"点击"处理左键单击事件和" RightTapped"处理右键单击事件。有关如何在用户按住按钮时禁用左键单击事件的任何建议?谢谢!
XAML代码很简短:
<Button x:Name="m_NewPageButton"
Content="New Page"
Height="48"
Width="199"
Click="OnClick"
RightTapped="OnRightClick"/>
这里是cpp代码:
void MainPage::OnClick()
{
// Left click task
}
void MainPage::OnRightClick()
{
// Right click task
}
编辑:
谢谢大家,解决方案是将左键单击处理程序更改为,不会通过按住来触发。
答案 0 :(得分:1)
您可以使用“保持”事件来检测点击并按住。使用Tapped事件进行单击(或单击)。 Tapped事件应仅在快速点击和释放时触发。鼠标特定点击将提升Tapped,但触摸点击并保持不会。
答案 1 :(得分:1)
Hacky但是有效......
private bool rightClicked;
private async void Button_Click(object sender, RoutedEventArgs e)
{
if (rightClicked)
return;
await new MessageDialog("left").ShowAsync();
}
private async void Button_RightTapped(object sender, RightTappedRoutedEventArgs e)
{
rightClicked = true;
await new MessageDialog("right").ShowAsync();
rightClicked = false;
}
我猜这是设计中的一个缺陷.. :(
实际上...如果您使用按钮的Tapped和RightTapped事件,它可以正常工作。所以在这种情况下,只需用Tapped替换Clicked,一切都很好......然后你可以忽略我上面提到的黑客。