Because your range is so small (you can only get 2 numbers: 2 and 3), you are very likely to get a duplicate! Its like flipping a coin:
Heads, Heads = 25% (duplicate)
Heads, Tails = 50%
Tails, Tails = 25% (duplicate)
In fact, you will get a duplicate 50% of the time!
There are a lot of ways to get around this, but if you will always have 2 (and exactly two) selections, you can just change your code to:
Random myRandom = new Random();
int randomNumber = myRandom.Next(2, 4);
textBox1.Text = Convert.ToString(randomNumber);
int randomNumber2 = myRandom.Next(2, 4);
while (randomNumber2 == randomNumber)
randomNumber2 = myRandom.Next(2, 4);
textBox2.Text = Convert.ToString(randomNumber2);
Basically you just loop until you get a different value. You should also note that calling this function repeatedly (very quickly) could cause problems since you are initializing the Random object each time. Since it uses a time-based seed, having two initializations close to each other in time could cause "repeated" results. In general it is considered better practice to put the Random class instance at the class level (instead of the function level).