0

I've no real idea how to do this and I have tried messing with a timer but to no avail so far.

So what am I trying to do?

I have a label that is blank. When a certain event is triggered I want the label to say "Competition successfully setup" for a period of 5 seconds after which I want it to return to being blank.

Surely this can be done?? Can it? I have played around with a timer but I seem to be well off the mark.

Any help would be most welcome. My feeble attempt is below.

private void UpdateLabel(object sender, EventArgs e)
        {
            var timer = new Timer()
                {
                    Interval = 5000,
                };
            timer.Tick += (s, evt) =>
                  lblCompetitionSetupSuccess.Text = "Competition successfully setup";

            timer.Start();

            lblCompetitionSetupSuccess.Text = string.Empty;
        }
gallie
  • 143
  • 1
  • 2
  • 9

2 Answers2

5

Try the other way around:

    private void button1_Click(object sender, EventArgs e)
    {
        label1.Text = "I will vanish in 5 sec";

        var timer = new Timer();
        timer.Interval = 5000;
        timer.Tick += (o, args) => label1.Text = "";
        timer.Start();
    }

First set the label to whatever text you want it to display for 5 sec

        label1.Text = "I will vanish in 5 sec";

Then setup your timer so that on timer elapsed it will remove the text

        var timer = new Timer();
        timer.Interval = 5000;
        timer.Tick += (o, args) => label1.Text = "";
        timer.Start();

If you want the timer to stop after the first timer elapse:

        timer.Tick += (o, args) =>
            {
                label1.Text = "";
                timer.Enabled = false;
            };
bas
  • 13,550
  • 20
  • 69
  • 146
1

Make sure you're using the System.Windows.Forms.Timer class, which calls the tick event on the UI thread.

zmbq
  • 38,013
  • 14
  • 101
  • 171