I'm trying to make a form invisible for x amount of time in c#. Any ideas?
Thanks, Jon
I'm trying to make a form invisible for x amount of time in c#. Any ideas?
Thanks, Jon
At the class level do something like this:
Timer timer = new Timer();
private int counter = 0;
In the constructor do this:
public Form1()
{
InitializeComponent();
timer.Interval = 1000;
timer.Tick += new EventHandler(timer_Tick);
}
Then your event handler:
void timer_Tick(object sender, EventArgs e)
{
counter++;
if (counter == 5) //or whatever amount of time you want it to be invisible
{
this.Visible = true;
timer.Stop();
counter = 0;
}
}
Then wherever you want to make it invisible (I'll demonstrate here on a button click):
private void button2_Click(object sender, EventArgs e)
{
this.Visible = false;
timer.Start();
}
BFree has posted similar code in the time it took me to test this, but here's my attempt:
this.Hide();
var t = new System.Windows.Forms.Timer
{
Interval = 3000 // however long you want to hide for
};
t.Tick += (x, y) => { t.Enabled = false; this.Show(); };
t.Enabled = true;
Bear in mind there are several types of timers available: http://msdn.microsoft.com/en-us/magazine/cc164015.aspx
And don't forget to disable the timer for the duration of the handler, lest you interrupt your self. Rather embarrassing.
Quick and dirty solution taking advantage of closures. No Timer Required!
private void Invisibilize(TimeSpan Duration)
{
(new System.Threading.Thread(() => {
this.Invoke(new MethodInvoker(this.Hide));
System.Threading.Thread.Sleep(Duration);
this.Invoke(new MethodInvoker(this.Show));
})).Start();
}
Example:
//Makes form invisible for 5 seconds
Invisibilize(new TimeSpan(0, 0, 5));