WPF 中关闭窗口事件 我想在点"X"关闭时提示信息,如果选是则关闭程序如果轩否就不关闭
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 中关闭窗口事件 我想在点"X"关闭时提示信息,如果选是则关闭程序如果轩否就不关闭相关的知识,希望对你有一定的参考价值。
最好有例子,谢谢
Button closeBtn = (Button)baseWindowTemplate.FindName("CloseBtn", this);
closeBtn.Click += delegate
Wnd_YesNoMsgbox messageBox = new Wnd_YesNoMsgbox();
messageBox.SetText("\t\t您是否要退出?");
var closeConfirm= messageBox.ShowDialog();
if (closeConfirm.Value)
Application.Current.Shutdown();
;
这是我研究很久的方案 希望对你们有所帮助
具体代码如下:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
MessageBoxResult result = MessageBox.Show("Do you really want to exit?","", MessageBoxButton.YesNo);
if (result == MessageBoxResult.No)
e.Cancel = true;
追问
这个我知道,我是想问我的控件都是重绘的,事件不再同一个.CS中,所以写这个不能实现,要是这么简单我就不会问了,网上有很多,我想知道我怕重绘之后的事件是直接关闭的,我想让它在关闭前做这些操作,求高人啊
追答什么叫控件都是重绘的?是都重新实例化么?就是你的弹出窗口是自己的UserControl,是不是这个意思?楼主可以贴上自己的代码,供大家分析么?
OK,看了你的方案。应该是可行的。你在运行的过程中遇到些什么问题么?
如何在 macOS 中关闭 OpenCV 窗口(Python 3)?
【中文标题】如何在 macOS 中关闭 OpenCV 窗口(Python 3)?【英文标题】:How to close OpenCV window (Python 3) in macOS? 【发布时间】:2021-11-19 01:48:04 【问题描述】:我是第一次使用 macOS High Sierra 和 Spider IDE 进行 Python 编程。
当我按键盘上的q键时,窗口没有关闭。输出窗口在最后一帧冻结,控制返回到 Python 提示符。
我们将不胜感激任何解决方案或解决方法。我也很想知道原因。
以下是 Python 和 OpenCV 版本的详细信息。
Python 3.9.7 OpenCV 4.5.3 Spyder 5import cv2
The code is as follows,
import cv2
frameWidth = 640
frameHeight = 480
cap = cv2.VideoCapture(0)
cap.set(3, frameWidth)
cap.set(4, frameHeight)
cap.set(10,150)
window_name = "Result"
cv2.namedWindow(window_name)
while cap.isOpened():
success, img = cap.read()
if success:
cv2.imshow(window_name, img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyWindow(window_name)
【问题讨论】:
那是因为你被困在循环中……因为你没有在视频结束时打破循环。 --isOpened
将永远保持真实。它只告诉您文件可以打开和读取,而不是视频已经结束。创建 VideoCapture 实例后,您必须仅检查一次 isOpened
。你必须检查并打破:if not success: break
。每个人都做错了,因为每个人似乎都遵循写得很糟糕的“教程”甚至“视频教程”。不得不一直重复这一点很累。
我将它替换为 true,它仍然无法正常工作。
是的,因为我说的还不止这些。我说你也必须跳出循环。请不要只忽略第一点以外的所有内容。
【参考方案1】:
注意:成功变量 - 是一个布尔标志,告诉您下一帧是否可供读取。
如果成功为假,您可能已经到了视频的结尾。那么,你的程序就会陷入死循环,因为你从来没有满足if success: ...
的条件,所以你无法到达命令if cv2.waitKey(1) & 0xFF == ord('q'): break
。
首先,您必须更改 while 循环中的条件。
改变
while cap.isOpened():
success, img = cap.read()
if success:
cv2.imshow(window_name, img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
到
while cap.isOpened():
success, img = cap.read()
if not success:
break
cv2.imshow(window_name, img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
如果您仍然遇到与我的 Jupyter Notebook 相同的问题,请尝试在销毁窗口后添加 cv2.waitKey(1)
。
cv2.destroyAllWindows()
cv2.waitKey(1)
cap.release()
【讨论】:
以上是关于WPF 中关闭窗口事件 我想在点"X"关闭时提示信息,如果选是则关闭程序如果轩否就不关闭的主要内容,如果未能解决你的问题,请参考以下文章