It's time to learn a bit about async/await. Instead of calling Thread.Sleep which blocks the UI thread, you can use await Task.Delay. For example, assuming you have the using statement:
using System.Threading.Tasks;
Then put the loading code, in the Load event handler, like this:
private async void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "Something ...";
await Task.Delay(5000);
MessageBox.Show("After 5 seconds!");
}
Here you do not need to call refresh or update or invalidate, and you do not need it in constructor. Just remember to handle the load event (assign the event handler using designer or using code).
Learn more