我有一个属性CanClose,可以处理问题“保存已修改的DOC?”。并返回true或false。在此属性内,如果已修改DOC,则询问用户是否仍要关闭,保存然后关闭或中止(不关闭)。我将此属性放在监视窗口中,监视窗口会打开许多对话框。我如何才能了解该属性是否由监视窗口调用,从而跳过对话框?
private bool CanClose
{
get
{
if(IsModified)
{
switch(MyMessageBox.AskYesNoCancelQuestion(this, "$ProgramModifiedQuestion", DialogResult.Yes))
{
case DialogResult.No:
return true;
case DialogResult.Yes:
_saveToolStripMenuItem.PerformClick();
return true;
default: // Cancel
return false;
}
}
else
return true;
}
}
顺便说一句,在这种情况下,我通过观看实际上是我感兴趣的IsModified属性来绕过该问题,但是由于这种情况也可能在其他比赛中出现,因此我想找到一个确定的解决方案。