6

I have searched but I dont know if I am using the correct verbiage to search for. I am writing a program in C# for my class but I am having trouble with the message box.

I am trying to have the message box show a message and read a variable at the same time. I have no problem doing this in the console applications but I cannot figure it out for the Windows side.

So far I have:

MessageBox.Show("You are right, it only took you {0} guesses!!!", "Results", MessageBoxButtons.OK);

Which works fine. Howerver I am trying to have the {0} be the result of the variable numGuesses. I'm sure this is simple and I am just overlooking it in the book or something, or I have the syntax incorrect someplace.

willisj318
  • 105
  • 2
  • 2
  • 6
  • `MessageBox.Show(String.Format("You are right, it only took you {0} guesses!!!", numGuesses), "Results", MessageBoxButtons.OK);` – Tim Schmelter Aug 20 '11 at 22:19

6 Answers6

15

try

MessageBox.Show(string.Format ("You are right, it only took you {0} guesses!!!", numGuesses ), "Results", MessageBoxButtons.OK);

see http://msdn.microsoft.com/en-us/library/system.string.format(v=VS.100).aspx

Yahia
  • 69,653
  • 9
  • 115
  • 144
4

You can use String.Format or simple string concatenation.

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

Concatenation:

MessageBox.Show("You are right, it only took you " + myVariable + " guesses!!!", "Results", MessageBoxButtons.OK);

Both results are equivalent, but you may prefer String.Format if you have multiple variables in the same string.

Evan Mulawski
  • 54,662
  • 15
  • 117
  • 144
1

What about String.Format() ?

MessageBox.Show(String.Format("You are right, it only took you {0} guesses!!!", numGuesses), "Results", MessageBoxButtons.OK);
Dalmas
  • 26,409
  • 9
  • 67
  • 80
1

String.Format is what you want:

string message = string.Format("You are right, it only took you {0} guesses!!!",numGuesses)

MessageBox.Show(message, "Results", MessageBoxButtons.OK);
Joe
  • 80,724
  • 18
  • 127
  • 145
1
MessageBox.Show(
                  string.Format(
                                 "You are right, it only took you {0} guesses!!!",
                                Results
                               ), 
                  MessageBoxButtons.OK
               );
Andrew Shepherd
  • 44,254
  • 30
  • 139
  • 205
0

You are well done with your class, and this thread is old. With that said, today you can solve this issue as such:

var firstName = "Sam";
MessageBox.Show($"My first name is { firstName }.", "First Name", MessageBoxButtons.Ok);

You can also use it in a catch block:

...
}
catch (Exception ex)
{
    MessageBox.Show($"Program encountered an error \n\n{ ex.Message }", "Program Error", MessageBoxButtons.Ok);
}

Basically any string variable can be used in this way. Not sure about functions that return a string, though I don't see why not.

Riv
  • 323
  • 2
  • 8