2013-04-11 7 views
8

ユーザーが管理者であるかどうかを確認するボタンがあります。現在ログインしているユーザーが管理者でない場合、ラベルは警告メッセージとして表示され、数秒後に非表示になります。私はlblWarning.Hide();lblWarning.Dispose();を警告メッセージの後に使ってみましたが、問題は、警告メッセージを表示する前にメッセージを隠すことです。これは私のコードです。ラベルテキストを警告メッセージとして表示し、数秒後に非表示にしますか?

private void button6_Click(object sender, EventArgs e) 
{ 
    if (txtLog.Text=="administrator") 
    { 
     Dialog(); 
    } 

    else 
    { 
     lblWarning.Text = "This action is for administrator only."; 
     lblWarning.Hide(); 
    } 

} 
+0

あなたがテキストを設定した後だけに隠れている

lblWarning.Text = "This action is for administrator only."; System.Threading.Thread.Sleep(5000); lblWarning.Hide(); 

のThread.sleep

を使用することができます。あなたはしばらくの間待つ必要があります。ページ上のどこにでも通知としてメッセージを表示したいだけです。私はtoastrまたは同様の機能を使用します.https://github.com/CodeSeven/toastr –

+0

あなたはクライアントにメッセージを表示するためにjavascriptを使用し、それを非表示にすることができます。 サーバのコードでは実行しないでください。参照してください: http://stackoverflow.com/questions/4634013/javascript-sleep –

答えて

22

あなたはTimerでそれを「非表示」にしたいとしています。あなたがちょうどあなたが望む時間がかかるし、1000年Interval理由を掛け3秒以上、それは目に見えるたい場合はそう

lblWarning.Hide(); 

:これに代えて

var t = new Timer(); 
t.Interval = 3000; // it will Tick in 3 seconds 
t.Tick += (s, e) => 
{ 
    lblWarning.Hide(); 
    t.Stop(); 
}; 
t.Start(); 

:あなたはこのような何かを実装するかもしれませんミリ秒単位です。

+0

そのコード内のeは何ですかlblWarningの変数か、それは時間を表していますか? – user2262382

+0

@ user2262382、それは 'EventArgs'オブジェクトです。 'Tick'イベントは[' EventHandler'](http://msdn.microsoft.com/en-us/library/system.eventhandler.aspx)デリゲートを使用し、 'Object sender、EventArgs e'という2つの引数を持っています。だから、私はそれらのパラメータのインラインデリゲートを宣言しています。 –

+0

私はそれを得た。私はすでに他のコードから使用しているので、変数eの例外があります。 – user2262382

-1

はきっとあなただけの5000 =あなたのコードでは、/一時停止待ちたいミリ秒数/スリープ

+1

これにより、他のすべてのインスタンス/スレッドも同じスリープ時間にスリープしますか? –

+4

thread.sleepは良いアイデアではありません。ユーザーは5秒間何もすることができません。 –

関連する問題