我想知道是否有一种方法可以防止在尚未处理现有错误对话框时出现错误对话框(errordlg)。我正在 matlab 中开发一个 GUI,我可以轻松地显示 50 个错误对话框并折叠我的任务管理器,如图所示。
另一方面,我看到警告或错误对话框在用户参与之前不允许用户操作 GUI。有没有办法做到这一点?
提前致谢!查理
我想知道是否有一种方法可以防止在尚未处理现有错误对话框时出现错误对话框(errordlg)。我正在 matlab 中开发一个 GUI,我可以轻松地显示 50 个错误对话框并折叠我的任务管理器,如图所示。
另一方面,我看到警告或错误对话框在用户参与之前不允许用户操作 GUI。有没有办法做到这一点?
提前致谢!查理
dbstack
如果同一个回调正在创建错误对话框,您可以通过检查对负责回调的多次调用来防止回调重新进入。请参阅isMultipleCall
此博客上的功能。
在这里抄袭 Yair Altman 的函数是没有意义的,但使用时会涉及到将以下行放在创建错误对话框的回调顶部:
if isMultipleCall(); return; end
然后,在您解决错误对话框之前,该回调无法再次运行,从而允许第一次调用终止。
但是,您可以使用被'WindowStyle'
调用来创建错误对话框'modal'
,这将阻止与任何其他 MATLAB 窗口的交互,直到对话框关闭。
errordlg
有第三个论点createmode
。一种可能的值是'replace'
关闭所有先前打开的具有相同标题的错误对话框。如果 50 个左右的错误对话框相同,这对您的情况很有用。