C# 试图覆盖 ShowDialog()

标签 c#

我在覆盖、重载等方面很弱,所以我无法处理这个。我的问题是这样的

我有一个 frmDialog。它仅用于显示流程消息、错误消息等。它从日志中获取其文本,因此我不需要将变量传递给它。在每个进程(在其他表单上)之后,我创建这个表单并调用 ofrmDialog.ShowDialog()。我的问题是,即使文本为空,此对话框也会打开并且什么也不显示。所以我想覆盖这个 ShowDialog。 ShowDialog 返回 DialogResult,所以我真的不知道如何做到这一点。

public override DialogResult ShowDialog(){
    if(this.Text != string.Empty){
    return base.ShowDialog();
    }
    else{
    //don't do anything
    }
}

有其他东西时我返回什么?我真的无法理解这一点。

最佳答案

我个人建议将 ShowDialog 放在 if 语句中,以便仅在文本不为空时才触发它。

例如

if(text is not empty)
{
    //Show dialog
}

这样您就可以避免当前遇到的问题。如果您必须返回某些内容,您可以将 DialogResult 设置为等于它需要的值 - 例如,OK 或 Cancel。

但是,根据您的评论,我建议您将其放在代码的 else 语句中:
else
{
    return base.ShowDialog = "<OK>";
}

关于C# 试图覆盖 ShowDialog(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11932739/

相关文章:

c# - 如何将 C# 字符串转换为 Span<char>? (跨度<T>)

c# - 将 BYTE 数组转换为 INT

c# - 我应该如何解码 UTF-8 字符串

c# - 是否可以创建一组条件语句?

c# - 字段封装的不同重构风格 : how to make Visual Studio change it?

c# - 在 .NET Core 中反编译匿名方法 IL

C# Net Class 引用的类库 : why must I fully qualify a public class?

c# - '等待'一个可观察的

c# - 访问者模式和封装

c# - 这些虚拟表有什么意义?