2010-11-24 10 views

答えて

9
timer.Interval=5000; 
timer.Enabled=true; 
MessageBox.Show("Should close automatically"); 

タイマーのTickのEventHandlerと、次のスニペットを関連付けます

private void timer_Tick(object sender,EventArgs evt) { 
    timer.Enabled=false; 
    SendKeys.Send("{ESC}"); // SendWait as alternative 
} 
+0

+1;これは回避策として機能します。私の答えは 'MessageBox'クラスに特化していました。=) – BeemerGuy

+1

これは悪い理由がいくつもあります。メッセージボックスが最初に開かれたため、すでに閉じられている可能性があります。 – Murph

2

MessageBoxクラスでは不可能です。あなたはそれを模倣し、あなた自身がこの機能を追加する独自のフォームを作成する必要があります。

+0

Windows APIメッセージボックスでこれを行うことができます。メッセージボックスのウィンドウハンドルを保持し、タイマーが起動するとWM_CLOSEメッセージをポストするだけです。あなたは、ウィンドウの閉鎖のイベントに注意し、その最終的にタイマーを放棄することを確認してください。あなたはちょうどP/Invokeのビットが必要です。しかし、より良い解決策は、この質問に対する私の答えに応じてダイアログボックスを使用しないことです。 –

+0

"MessageBox'にはその機能がなく、回避策が必要です。 – BeemerGuy

0

メッセージボックスは間違った解決方法です。ヒントウィンドウが必要です。

+0

「ヒントウィンドウ」とは何ですか? Windowsのフォームの中に何かがあるのなら、それは私の新しいものです。それがあなたのものなら、それはあまりにも薄い答えです。 – Murph

+0

あなたはいくつかの仕事をする必要がある場合、それはあまりにも薄い答えですか?私は更新プログラムが更新されたときにWindowsが表示する種類のメッセージを考えています。あなたは非常に簡単にクロムのないウィンドウを表示し、5秒後にそれを殺すことができますが、いくつかの標準的なシステムコンポーネントが必要です。 –

0

これは、Webページ上にある場合、あなたはかなり良い効果のためにJavaScriptやjQueryのを使用することができます。これはしばしば"フェード"アニメーションと呼ばれます。それはタイマーを使用します。

このアプローチでは、実際の警告またはMessageBoxを使用しません。 <div>またはその他の名前付きHTML要素を使用します。

javacriptを使用している場合、コードhereが見つかります。

jQueryを使用している場合は、fadeOutを参照してください。 1つはarticleです。

関連する問題