目前我有一个像这样声明的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);
这不是一个大问题。对我而言,如果它能像上一个提案一样工作,那么它看起来/感觉会更好。
也许有人知道实现这一目标的方法。
答案 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);