ラベルを数秒だけ表示したいです
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2023/5/11 10:52:56
> Visual Studio 2008 .NET Framework 3.5のC#を使用しています
お゙ぉぅ…。
> それがtrueならラベルの文字をOKにして1秒表示、falseならラベルの文字をNGにして1秒表示ということをしたいです。
Windows Forms プロジェクトという事で良いでしょうか?
> 画面に入力された内容をチェックする関数があり、
とりあえず検証用に
bool chk() { return this.checkBox1.Checked; }
を用意してみました。
> 画面内容入力後のイベントに
検証用に、button1_Click 内に記述してみました。
> 以上のようにしていますが、ラベルが表示されたままになります。
当方の Visual Studio 2008 環境では 1 秒後に消えました。
> どこがいけないのでしょうか?ご教授よろしくお願いいたします。
教授 / 教示 の取り違えはさておき、イベント ハンドラの割り当て漏れでは無いでしょうか。
デザイン画面で、TimerOKNG のプロパティウィンドウで ⚡ アイコンをクリックし、
Tick イベントに TimerOKNG_Tick が割り当てられているかを再確認してみてください。
> TimerOKNG.Interval = 1000;
C# の場合、コントロールやコンポーネントを貼った場合、
既定の名前は timer1 のように小文字表記になりますよね。
実際、Label も lbl_OKNG という名前にしているようですが、
Tiemr だけは大文字表記にしているのですか?
命名ルールとして、Pascal 規約なのか Camel 規約なのかを統一しておいた方が良いと思いますよ。
お゙ぉぅ…。
> それがtrueならラベルの文字をOKにして1秒表示、falseならラベルの文字をNGにして1秒表示ということをしたいです。
Windows Forms プロジェクトという事で良いでしょうか?
> 画面に入力された内容をチェックする関数があり、
とりあえず検証用に
bool chk() { return this.checkBox1.Checked; }
を用意してみました。
> 画面内容入力後のイベントに
検証用に、button1_Click 内に記述してみました。
> 以上のようにしていますが、ラベルが表示されたままになります。
当方の Visual Studio 2008 環境では 1 秒後に消えました。
> どこがいけないのでしょうか?ご教授よろしくお願いいたします。
教授 / 教示 の取り違えはさておき、イベント ハンドラの割り当て漏れでは無いでしょうか。
デザイン画面で、TimerOKNG のプロパティウィンドウで ⚡ アイコンをクリックし、
Tick イベントに TimerOKNG_Tick が割り当てられているかを再確認してみてください。
> TimerOKNG.Interval = 1000;
C# の場合、コントロールやコンポーネントを貼った場合、
既定の名前は timer1 のように小文字表記になりますよね。
実際、Label も lbl_OKNG という名前にしているようですが、
Tiemr だけは大文字表記にしているのですか?
命名ルールとして、Pascal 規約なのか Camel 規約なのかを統一しておいた方が良いと思いますよ。
投稿者 かーらー  (学生)
投稿日時
2023/5/11 11:08:30
ご回答ありがとうございます。
>Windows Forms プロジェクトという事で良いでしょうか?
そうです。
>当方の Visual Studio 2008 環境では 1 秒後に消えました。
検証ありがとうございます。
>教授 / 教示 の取り違えはさておき、イベント ハンドラの割り当て漏れでは無いでしょうか。
>デザイン画面で、TimerOKNG のプロパティウィンドウで ⚡ アイコンをクリックし、
>Tick イベントに TimerOKNG_Tick が割り当てられているかを再確認してみてください。
失礼いたしました。。割り当てられているか確認したところ、プロパティの部分には記載されていました。
一応、イベントを削除し、もう一度作成し動作確認したところ無事に消えました!
>C# の場合、コントロールやコンポーネントを貼った場合、
>既定の名前は timer1 のように小文字表記になりますよね。>
>実際、Label も lbl_OKNG という名前にしているようですが、
>Tiemr だけは大文字表記にしているのですか?
確かにおかしいと思い、小文字にいたしました。アドバイスありがとうございます。
>Windows Forms プロジェクトという事で良いでしょうか?
そうです。
>当方の Visual Studio 2008 環境では 1 秒後に消えました。
検証ありがとうございます。
>教授 / 教示 の取り違えはさておき、イベント ハンドラの割り当て漏れでは無いでしょうか。
>デザイン画面で、TimerOKNG のプロパティウィンドウで ⚡ アイコンをクリックし、
>Tick イベントに TimerOKNG_Tick が割り当てられているかを再確認してみてください。
失礼いたしました。。割り当てられているか確認したところ、プロパティの部分には記載されていました。
一応、イベントを削除し、もう一度作成し動作確認したところ無事に消えました!
>C# の場合、コントロールやコンポーネントを貼った場合、
>既定の名前は timer1 のように小文字表記になりますよね。>
>実際、Label も lbl_OKNG という名前にしているようですが、
>Tiemr だけは大文字表記にしているのですか?
確かにおかしいと思い、小文字にいたしました。アドバイスありがとうございます。
画面に入力された内容をチェックする関数があり、それがtrueならラベルの文字をOKにして1秒表示、falseならラベルの文字をNGにして1秒表示ということをしたいです。
現在、ツールボックスのデバイスコンポーネントからTimerをフォームに配置し
Loadイベントに
TimerOKNG.Interval = 1000;
画面内容入力後のイベントに
if (chk())
{
lbl_OKNG.Text = "OK";
lbl_OKNG.Visible = true;
}
else
{
lbl_OKNG.Text = "NG";
lbl_OKNG.Visible = true;
}
// 時間経過でラベル消す
//TimerOKNG.Interval = timerClose;
TimerOKNG.Enabled = true;
と記載し、Tickイベントも以下の用に記載しています
private void TimerOKNG_Tick(object sender, EventArgs e)
{
lbl_OKNG.Visible = false;
TimerOKNG.Enabled = false;
}
以上のようにしていますが、ラベルが表示されたままになります。
どこがいけないのでしょうか?ご教授よろしくお願いいたします。