Frage
Ich versuche, eine Form unsichtbar für x Höhe der Zeit in c # zu machen. Irgendwelche Ideen?
Danke, Jon
Lösung
BFree hat es mir ähnlich Code geschrieben in der Zeit, dies zu testen, nahm, aber hier ist mein Versuch:
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;
Andere Tipps
Schnelle und schmutzige Lösung Vorteil von Verschlüssen nehmen. Kein Timer erforderlich!
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();
}
Beispiel:
// Macht Form unsichtbar für 5 Sekunden
Invisibilize (neuer Timespan (0, 0, 5));
Auf der Ebene der Klassen etwas tun, wie folgt aus:
Timer timer = new Timer();
private int counter = 0;
Im Konstruktor dies tun:
public Form1()
{
InitializeComponent();
timer.Interval = 1000;
timer.Tick += new EventHandler(timer_Tick);
}
Dann wird Ihr 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;
}
}
Dann, wo Sie es unsichtbar machen wollen (ich auf einen Knopf klicken hier zeigen werden):
private void button2_Click(object sender, EventArgs e)
{
this.Visible = false;
timer.Start();
}
Beachten Sie gibt es mehrere Arten von Timern zur Verfügung: http://msdn.microsoft.com/en-us/magazine/cc164015. aspx
Und vergessen Sie nicht, den Timer für die Dauer der Prozedur zu deaktivieren, damit Sie sich selbst unterbrechen. Eher peinlich.