Sigh...
string a = "Morning";
textbox2.Text = string.Format("Good {0}", a);
The reason it works in WriteLine is because you're using an overload of WriteLine that specifically handles the string.Format() call for you.
That's not how string handling and assignments work though.
However, in newer versions of C#, you can do this:
string a = "Morning";
textbox2.Text = $"Good {a}";