gpt4 book ai didi

c# - Messagebox 多次显示

转载 作者:行者123 更新时间:2023-11-30 16:22:01 28 4
gpt4 key购买 nike

我正在使用 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 表示手势识别激活,否则不激活。)

所以有两个问题:

  1. MessageBox 显示两次。如果我在其中任何一个中单击 Yes窗口 将关闭。行为没问题,但我不想要两个窗口。

  2. 如果我单击 No,将显示另一个 MessageBox。如果我在此框上单击 No,则会打开另一个。对于我单击的每个连续 No 都会发生这种情况。大约显示 5-6 次后,它给了我想要的行为,即,它将 pause 变量的值更改为 false 并因此激活了其他的识别手势。

我究竟做错了什么?我该怎么做才能停止一切并等待用户单击其中一个选项?另外,为什么 MessageBox 会显示多次(最初显示两次,当我单击 No 时显示更多)?

最佳答案

如果不查看正在调试的代码就很难判断,但我猜测您的第一段代码是在处理最新 Kinect 数据的某种循环或事件处理程序中被调用的。

检查暂停

尝试在第一段代码上方添加类似这样的内容:

if (pause)
return;

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();
}

超时

如果这不起作用,您可能需要在上次提示用户后添加一个超时期限。

private void quit()
{
if (DateTime.Now.Subtract(_lastQuitTime).TotalSeconds > 5)
{

//Prompt the user

//Reset the timeout
_lastQuitTime = DateTime.Now;
}
}

关于c# - Messagebox 多次显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12800266/

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