
C#で、例えばForm2をForm1から開き、ある問題があってForm2のボタンを押すとForm2のラベルに正解と表示されます。
その文字が表示されたら数秒後に自動でForm2が閉じられるプログラムを書きたいのですがうまくいきません。
現在、こう書いています。3秒後とします。
using System.Threading;は宣言しています。
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if(label1.Text=="正解です。")
{
Thread.Sleep(3000);
e.Cancel= false;
}
こうするといつまでも閉じてくれません。
ボタンクリックプログラムに、if文で、~ならば正解です、~ならば間違いです、などとふり分けている中、正解のところに
label1.Text="正解です。";
Thread.Sleep(3000);
this.Close();
などとすると、ボタンを押したら、ラベルには何も表示されずに3秒後に閉じます。
どうすればいいでしょうか?
No.2ベストアンサー
- 回答日時:
というワケで簡単に。
# 手動で閉じた場合だとか、タイマーのキャンセルしてないとか…まあ、いろいろありますけど。
全角スペースでインデントしていますので、コピペする際にはご注意を。
public partial class Form1 : Form
{
private Timer CloseTimer;
public Form1()
{
InitializeComponent();
CloseTimer = new Timer();
CloseTimer.Stop();
CloseTimer.Interval = 3000;
CloseTimer.Tick += new EventHandler(CloseTimer_Tick);
}
void CloseTimer_Tick(object sender, EventArgs e)
{
this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "正解です。";
CloseTimer.Start();
}
private void button2_Click(object sender, EventArgs e)
{
label1.Text = "間違いです。";
}
}
No.1
- 回答日時:
>その文字が表示されたら数秒後に自動でForm2が閉じられるプログラムを書きたいのですがうまくいきません。
フォームにTimerクラスのフィールドを追加して、「正解」の文字列をラベルに設定したらタイマースタート。
タイマーの満了で自分自身でClose()メソッド呼べばいいんじゃないですかね?
http://msdn.microsoft.com/ja-jp/library/system.w …
>などとすると、ボタンを押したら、ラベルには何も表示されずに3秒後に閉じます。
イベントハンドラから抜けるまで3秒掛かります。
で、そのイベントハンドラを抜けた時点で
label1.Text="正解です。";
の描画が実行され、その直後に閉じます。
イベントハンドラ内で時間のかかる作業を行ってはいけません。
# と言いつつ、仕事で作ったヤツはしばらく時間かかる処理やってますけどね。
# おかげでプログラムがフリーズしたかのような反応になることも……。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
このQ&Aを見た人はこんなQ&Aも見ています
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
【C#】別フォームも同時に閉じるには?
C言語・C++・C#
-
CloseとDisposeの違い
Visual Basic(VBA)
-
-
4
ピクチャーボックスの大きさに合わせて画像を表示
Visual Basic(VBA)
-
5
C# インスタンスの破棄
その他(プログラミング・Web制作)
-
6
Hideについて(.NET)
Visual Basic(VBA)
-
7
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
8
フォームの再読み込み
Visual Basic(VBA)
-
9
C# シリアル通信でデータ受信時の欠損について
C言語・C++・C#
-
10
ユーザーアカウントが複数ある場合のタスクスケジュール設定
サーバー
-
11
Visual Studio 「AnyCpu」について
C言語・C++・C#
-
12
C# フォームを閉じてもプログラムが終了しない
C言語・C++・C#
-
13
C#でSendInputを使ったサンプルを動かそうとしているのですが、よくわかりません
C言語・C++・C#
-
14
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
15
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#】別フォームも同時に閉じ...
-
エクセルで作った新しいウイン...
-
グラフの交点の求め方(Excel)
-
「アイテムは収集されました」...
-
Minecraft 統合版(PC)の描画距...
-
コントロールの書式設定で、“コ...
-
勝手にウィンドウが開いて止ま...
-
TextBoxに文字を書いても表示さ...
-
ActiveXコントロールを.NETにイ...
-
VBAのフォント変更(エクセルか...
-
VB.NET2005 TextBox 高さ(Heig...
-
コンボボックス内の文字サイズ変更
-
マインクラフト(pc版)で座標...
-
ゲームでは結局どっちが良いの?
-
エクセルのコントロールツール...
-
ラジオボタンの初期指定
-
多角形の内部かどうか判定する方法
-
リソースのダイアログボックス...
-
アイテムを点滅させる
-
コモンダイアログコントロール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#】別フォームも同時に閉じ...
-
C# フォームを閉じてもプログラ...
-
C#で、ある条件でFormが自動で...
-
C# 自分自身のコントロールを指...
-
OutLookのメール受信通知 (C#)
-
C# FlowLayoutPanelのコントロ...
-
【C#】サブフォームからメイン...
-
VC++フォームアプリケーション ...
-
C#でテキストボックスをクリッ...
-
ASP.NetでJavaScriptからポスト...
-
別フォームからdatagridviewの削除
-
C#で初歩で引っかかってしまい...
-
VB6においてのフォームの移動
-
エクセルで作った新しいウイン...
-
コントロールの書式設定で、“コ...
-
「アイテムは収集されました」...
-
グラフの交点の求め方(Excel)
-
コンボボックス内の文字サイズ変更
-
Minecraft 統合版(PC)の描画距...
-
エクセルのコントロールツール...
おすすめ情報