我已经搜索过,但我不知道我是否使用了正确的措辞进行搜索。我正在为我的班级编写一个 C# 程序,但我在使用消息框时遇到了问题。
我试图让消息框显示一条消息并同时读取一个变量。我在控制台应用程序中执行此操作没有问题,但在 Windows 端我无法弄清楚。
到目前为止我已经:
MessageBox.Show("You are right, it only took you {0} guesses!!!", "Results", MessageBoxButtons.OK);
效果很好。然而,我试图让 {0} 成为变量 numGuesses 的结果。我确信这很简单,我只是在书本或其他东西中忽略了它,或者我在某个地方的语法不正确。
尝试
MessageBox.Show(string.Format ("You are right, it only took you {0} guesses!!!", numGuesses ), "Results", MessageBoxButtons.OK);
参见 http://msdn.microsoft.com/en-us/library/system.string.format(v=VS.100).aspx
您可以使用
String.Format
或简单的字符串连接。
MessageBox.Show(String.Format("You are right, it only took you {0} guesses!!!", myVariable), "Results", MessageBoxButtons.OK);
http://msdn.microsoft.com/en-us/library/system.string.format(v=VS.100).aspx
连接:
MessageBox.Show("You are right, it only took you " + myVariable + " guesses!!!", "Results", MessageBoxButtons.OK);
两个结果是等效的,但如果同一字符串中有多个变量,您可能更喜欢
String.Format
。
String.Format()怎么样?
MessageBox.Show(String.Format("You are right, it only took you {0} guesses!!!", numGuesses), "Results", MessageBoxButtons.OK);
String.Format就是你想要的:
string message = string.Format("You are right, it only took you {0} guesses!!!",numGuesses)
MessageBox.Show(message, "Results", MessageBoxButtons.OK);
MessageBox.Show(
string.Format(
"You are right, it only took you {0} guesses!!!",
Results
),
MessageBoxButtons.OK
);
你的课做得很好,这个帖子已经很旧了。话虽如此,今天您可以这样解决这个问题:
var firstName = "Sam";
MessageBox.Show($"My first name is { firstName }.", "First Name", MessageBoxButtons.Ok);
您还可以在 catch 块中使用它:
...
}
catch (Exception ex)
{
MessageBox.Show($"Program encountered an error \n\n{ ex.Message }", "Program Error", MessageBoxButtons.Ok);
}
基本上任何字符串变量都可以这样使用。不确定返回字符串的函数,但我不明白为什么不返回字符串。
我倾向于这样做 - 它允许灵活的参数并且非常紧凑:
private void MsgBox(string msg, params object[] args)
{
MessageBox.Show(String.Format(msg, args));
}
string routine = "TimerHandler";
int errorcode = 1234;
MsgBox("Error {0} in function {1}.", errorcode, routine);