【问题标题】:C# formatting a MessageBoxC# 格式化 MessageBox
【发布时间】:2011-03-24 14:55:58
【问题描述】:

我想显示一个消息框,提醒用户该过程已完成,并详细说明该过程的每个阶段所用的时间。我已经将要显示的文本进行了适当的格式化,但是 MessageBox 类的默认字体不是单宽的。据我所知,没有办法指定文本显示的字体。

是否有一个开箱即用的库可供我使用,还是我必须自己编写一个?

【问题讨论】:

  • 我确信已经编写了一些库,但自己编写一个库并不需要太多。
  • 我在我的一个项目中遇到了同样的问题,我必须显示更大的字体。为此,我创建了自己的自定义消息框。检查此链接以供参考。 codeproject.com/KB/cs/A_Custom_Message_Box.aspx

标签: c# winforms format messagebox


【解决方案1】:

有什么理由不使用等宽字体创建带有文本框/标签的Form,然后调用Form.ShowDialog?听起来像一个单独的库对我来说太过分了。

【讨论】:

  • 是的,这就是我想到的解决方案。我认为这将是一种常见情况,并惊讶地发现MessageBox 没有办法做到这一点,所以我希望我只是错过了一些东西。谢谢。
  • @T.K.:我可能错了,但我认为MessageBox.Show 只是调用 Win32 消息框,我怀疑它没有这种功能。
  • 使用表单的一大优势是您可以将文本复制到剪贴板。例如。使用只读文本框向用户显示错误消息;看起来像一个标签,但可以复制。
  • @JonCoombs:您也可以在标准消息框中按 Ctrl + C,它将所有内容(标题/文本/按钮)作为文本复制到剪贴板。
【解决方案2】:

为了记录,这实际上是可能的,MessageBox() 扩展选项卡。例如:

    private void button1_Click(object sender, EventArgs e) {
        MessageBox.Show(
            "hello\tworld\r\n" + 
            "second\tline");
    }

如果单词宽度开始接近制表符宽度,则不太值得信赖。您仍然应该更喜欢带有 ListView 的小助手表单。

【讨论】:

  • 这是一个有用的答案。我想在 MessageBox 中使用选项卡。谢谢。
【解决方案3】:

我刚刚为 MessageBox 编写了一个可更改字体的单个文件替换。您可以在此处下载并像标准 MessageBox 一样使用它:

http://www.codeproject.com/Articles/601900/FlexibleMessageBox-A-flexible-replacement-for-the

问候,约尔格

【讨论】:

    【解决方案4】:

    听起来您可能只想在其中放置一个新表单并使用一些标签..

    【讨论】:

    • 我更喜欢 Jon Skeets 的评论,因为他特别提到了使用 ShowDialog() 来调出表单。这样,您可以设置 DialogResult 表单属性,并且 ShowDialog() 调用将阻止执行,直到对话框关闭,并返回 DialogResult。
    【解决方案5】:

    我用这个:

    public void myMessageBox(object str)
    {
        System.Windows.Forms.MessageBox.Show( new System.Windows.Forms.Form{ TopMost = true, Width = 300}, str.ToString() );
    }
    

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 2011-06-12
      • 2017-03-19
      • 1970-01-01
      • 2020-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-04
      相关资源
      最近更新 更多