Try:
private void button1_Click(object sender, EventArgs e)
{
label1.Visible = true;
label1.Update();
string abcd;
string efgh;
for (Int64 x = 0; x < Int64.MaxValue; x++)
{
abcd = "abcd" + x.ToString();
for (Int64 y = 0; y < Int64.MaxValue; y++)
{
efgh = abcd + "efgh" + y.ToString();
}
}
}
With using the 'Update, or 'Refresh method on the Label, it is instantly visible: without the use of the 'Update or 'Refresh method: it does not become visible until the "stuff" has completed.
Comment: the code that takes a long time in your button Click EventHandler should probably be run in a separate thread so the UI can stay responsive: unless, of course, you want it to to stay un-responsive. In this case: you may not want the Label to "disappear" until the long-running code is done: but does that mean you want all the rest of the UI to stay un-responsive, that you want to suspend even the end-user's ability to move the Form around by the TitleBar ?
Alternatives to consider: (imho, weak) disable the Label while long-running code is executing to indicate something is happening; and, (imho, much better) a visible "progress bar," or other indicator, that reflects to the user that things are "cooking" in your long-running code.
That may require re-design of your code.