我想知道是否有办法阻止在尚未参加现有错误对话框时出现错误对话框(errordlg)。我正在用matlab开发一个GUI,我可以很容易地显示50个错误对话框,然后折叠我的任务管理器,如图所示。
另一方面,我看到警告或错误对话框,在用户参加之前不允许用户操作GUI。反正有吗?
提前致谢! 查理
答案 0 :(得分:4)
如果相同的回调正在创建错误对话框,则可以通过检查dbstack
多次调用负责回调来阻止回调重入。请参阅isMultipleCall
function on this blog。
在这里抄袭Yair Altman的功能是没有意义的,但是使用会涉及将以下行放在创建errordialog的回调的顶部:
if isMultipleCall(); return; end
然后,在你对errordialog进行寻址之前,该回调不能再次运行,允许第一次调用终止。
但是,您可以使用名为'WindowStyle'
的{{1}}创建错误对话框,这将阻止与对话框关闭之前与任何其他MATLAB窗口的交互。
答案 1 :(得分:3)
errordlg
有第三个参数createmode
。一个可能的值是'replace'
,其中所有先前打开的具有相同标题的错误对话框都将关闭。如果50个左右的错误对话框相同,这在您的情况下非常有用。