Ich versuche, ein Formular für x Zeit in C# unsichtbar zu machen. Irgendwelche Ideen?Verwenden eines Timers in C#
Danke, Jon
Ich versuche, ein Formular für x Zeit in C# unsichtbar zu machen. Irgendwelche Ideen?Verwenden eines Timers in C#
Danke, Jon
BFree hat in der Zeit, mir einen ähnlichen Code gepostet es dauerte dies zu testen, 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;
auf Klassenebene etwas tun, wie folgt aus:
Timer timer = new Timer();
private int counter = 0;
im Konstruktor wie folgt vorgehen:
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 immer Sie wollen, dass es unsichtbar machen (Ich werde hier auf einen Button klicken demonstrieren):
private void button2_Click(object sender, EventArgs e)
{
this.Visible = false;
timer.Start();
}
Bedenken 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.
Schnelle und schmutzige Lösung unter Ausnutzung von Verschlüssen. 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:
// Makes Form unsichtbar für 5 Sekunden
Invisibilize (new Zeitraum (0, 0, 5));
Reiniger Ansatz als meins. +1 – BFree
Timer implementieren IDisposable, sollten Sie es aufrufen. – ctacke
Ich nehme an, Sie könnten Dispose() manuell innerhalb des Event-Handlers aufrufen, aber Sie konnten es nicht in einen using() Block umbrechen oder der Timer würde entfernt werden, bevor es eine Chance hatte zu schießen, drei Sekunden später. –