我正在使用 Kinect 开发使用 C# 和 WPF 的图像查看应用程序。当用户将双手举过头顶时,我会显示Messagebox
询问用户他/她是否真的想退出:
//Quit if both hands above head
if (skeleton.Joints[JointType.HandLeft].Position.Y > skeleton.Joints[JointType.Head].Position.Y &&
skeleton.Joints[JointType.HandRight].Position.Y > skeleton.Joints[JointType.Head].Position.Y)
{
pause = true;
quit();
}
quit()
功能如下:
private void quit()
{
MessageBoxButton button = MessageBoxButton.YesNo;
MessageBoxImage image = MessageBoxImage.Warning;
MessageBoxResult result = MessageBox.Show("Are you sure you want to quit?", "Close V'Me :(", button, image);
if (result == MessageBoxResult.Yes) window.Close();
else if (result == MessageBoxResult.No)
{
pause = false;
}
}
该pause
变量用于在MessageBox
仍处于活动状态时停止识别任何手势。(pause
=false
表示手势识别激活,否则没有。)
所以有两个问题:
显示
MessageBox
两次。如果我单击Yes
其中任何一个,则window
关闭。行为还可以,但我不想要两个窗口。如果我单击
No
,MessageBox
则会显示另一个。如果我单击No
此框,则会打开另一个框。No
这发生在我点击的每一个连续的地方。在大约显示 5-6 次后,它给了我想要的行为,即,它将pause
变量的值更改为false
,从而激活对其他手势的识别。
我到底做错了什么?我该怎么做才能停止一切并等待用户单击其中一个选项?另外为什么MessageBox
显示多次(最初是两次,单击 时更多No
)?