如何更改MessageBox文本内容

时间:2014-11-26 03:53:22

标签: c# wpf messagebox

目前我有一个像这样声明的MessageBox.Show调用:

MessageBox.Show("Foo missing in configuration","Configuration Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

我想要完成的是动态更改文本内容。所以我做的是以下内容:

MessageBox.Show("Foo" + fooName + " missing  in configuration","Configuration Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

之前设置fooName值。

我只是想知道是否有办法这样做:

MessageBox.Show("Foo {0} missing in configuration", fooName, "Configuration Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

这不是一个大问题。对我而言,如果它能像上一个提案一样工作,那么它看起来/感觉会更好。

也许有人知道实现这一目标的方法。

2 个答案:

答案 0 :(得分:5)

本身没有MessageBox方法。但您始终可以使用string.Format()

MessageBox.Show(string.Format("Foo {0} missing in configuration", fooName),
    "Configuration Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

如果您正在寻找更方便的东西,您可以随时定义自己的方法:

public static void ShowMessageBox(string caption, MessageBoxButtons buttons, MessageBoxIcon icon, string format, params object[] formatArgs)
{
    MessageBox.Show(string.Format(format, formatArgs), caption, buttons, icon);
}

然后你可以这样称呼它:

ShowMessageBox("Configuration Error", MessageBoxButtons.OK,
    MessageBoxIcon.Error, "Foo {0} missing in configuration", fooName);

(注意:我稍微重新排列了一些参数; params当然必须是最后一个,将格式放在它们之前会将相关的参数保持在一起。

答案 1 :(得分:1)

使用Format类的string方法,您可以通过两行轻松完成此操作:

string msg = string.Format("Foo {0} missing in configuration", fooName);
MessageBox.Show(msg,
    "Configuration Error", 
    MessageBoxButtons.OK, 
    MessageBoxIcon.Error);

或在一个更长的时间内(在我看来更丑陋)行:

MessageBox.Show( string.Format("Foo {0} missing in configuration", fooName),
    "Configuration Error", 
    MessageBoxButtons.OK, 
    MessageBoxIcon.Error);