我在覆盖,超载等方面非常弱,所以我无法处理。我的问题是这个,
我有一个frmDialog。它仅用于显示进程消息,错误消息等。它从日志中获取其文本,因此我不需要将变量传递给它。在每个进程(在其他表单)之后,我创建此表单并调用ofrmDialog.ShowDialog()。我的问题是,即使文本为空,此对话框也会打开并且不显示任何内容。所以我想覆盖这个ShowDialog。 ShowDialog返回DialogResult,所以我真的无法弄清楚如何做到这一点。
public override DialogResult ShowDialog(){
if(this.Text != string.Empty){
return base.ShowDialog();
}
else{
//don't do anything
}
}
还有别的什么我会回来的?我真的无法理解这一点。
答案 0 :(得分:5)
就个人而言,我建议将ShowDialog放在if语句中,这样只有在文本不为空时才触发它。
e.g。
if(text is not empty)
{
//Show dialog
}
这样您就可以避免目前遇到的问题。如果你必须返回一些东西,你可以将DialogResult设置为它所需要的 - 例如OK或取消。
根据您的评论,我建议您将其放在代码的else语句中:
else
{
return base.ShowDialog = "<OK>";
}
答案 1 :(得分:1)
不是覆盖ShowDialog,而是需要更高的值,以便只有在显示某些文本时才构造并显示frmDialog。
public DialogResult ShowMessage(string text)
{
DialogResult dialogResult = DialogResult.OK;
if (!string.IsNullOrEmpty(text))
{
FrmDialog frmDialog = new FrmDialog(text);
dialogResult = frmDialog.ShowDialog();
}
return dialogResult;
}
答案 2 :(得分:0)
否则{ return DialogResult.OK; }
答案 3 :(得分:0)
我认为这取决于是否有任何调用者检查对话框结果,您在评论中声明您有860次调用此方法,是否有人检查结果?如果不是它还没有真正重要的东西,它只会在未来避免WTF?当你没有显示对话框时返回OK。
由于您必须返回某些内容,DialogResult.None
以后最不容易混淆