C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 一時的にイベントを無効にしたい


(過去ログ 103 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■61727 / inTopicNo.1)  一時的にイベントを無効にしたい
  
□投稿者/ cielo (1回)-(2011/08/31(Wed) 17:10:01)

分類:[C#] 

cieloと申します。よろしくお願いします。
環境『XP/SP3 VisualC#2008』

http://www.yukun.info/blog/2008/02/csharp-timer.html
上記のサイト様を参考にカウントダウンタイマーを作っています。

タイマーをスタートさせたら、カウントダウン中はtimelabel_MouseWheelとtimelabel_MouseClickの2つを
無効にしたいと思っています。

上記の事を実現させるには、どのようなやり方がありますでしょうか?
分かり難いとは思いますが、ご教授お願い致します。

以下コードです。

private void startbtn_Click(object sender, EventArgs e)
{
if (0 == sec) return;

timer1.Enabled = true;
this.startbtn.Enabled = false;
}

private void timer1_Tick(object sender, EventArgs e)
{
sec--;
if (0 == sec)
{
MessageBox.Show("時間になりました。");
timer1.Enabled = false;
this.Activate();
this.startbtn.Enabled = true;
}
viewtime();
}

int sec = 0; // 計測時間

private void viewtime()
{
timelabel.Text = "" + sec / 36000 % 10 + sec / 3600 % 10 +
":" + sec / 600 % 6 + sec / 60 % 10 +
":" + sec / 10 % 6 + sec % 10;
}

private void timelabel_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Delta > 0)
{
sec += 60;
viewtime();
}
else
{
sec += 10;
viewtime();
}
}

private void timelabel_MouseClick(object sender, MouseEventArgs e)
{
timelabel.Text = "00:00:00";
sec = 0;
}
}

引用返信 編集キー/
■61729 / inTopicNo.2)  Re[1]: 一時的にイベントを無効にしたい
□投稿者/ rain (1回)-(2011/08/31(Wed) 17:32:18)
ベターな方法です。

タイマーをスタートさせたら、以下を書く。
 this.timelabel.MouseWheel -= new System.EventHandler(this.timelabel_MouseWheel);
 this.timelabel.MouseClick -= new System.EventHandler(this.timelabel_MouseClick);

タイマーが終了したら、以下を書く。
 this.timelabel.MouseWheel += new System.EventHandler(this.timelabel_MouseWheel);
 this.timelabel.MouseClick += new System.EventHandler(this.timelabel_MouseClick);


引用返信 編集キー/
■61742 / inTopicNo.3)  Re[1]: 一時的にイベントを無効にしたい
□投稿者/ ヴァン (87回)-(2011/09/01(Thu) 09:21:00)
こんにちは。

イベント内でボタンかタイマーの Enabled を確認する方法はどうでしょうか?

No61727 (cielo さん) に返信
> cieloと申します。よろしくお願いします。
> 環境『XP/SP3 VisualC#2008』
>
> http://www.yukun.info/blog/2008/02/csharp-timer.html
> 上記のサイト様を参考にカウントダウンタイマーを作っています。
>
> タイマーをスタートさせたら、カウントダウン中はtimelabel_MouseWheelとtimelabel_MouseClickの2つを
> 無効にしたいと思っています。
>
> 上記の事を実現させるには、どのようなやり方がありますでしょうか?
> 分かり難いとは思いますが、ご教授お願い致します。
>
> 以下コードです。
>
> private void startbtn_Click(object sender, EventArgs e)
> {
> if (0 == sec) return;
>
> timer1.Enabled = true;
> this.startbtn.Enabled = false;
> }
>
> private void timer1_Tick(object sender, EventArgs e)
> {
> sec--;
> if (0 == sec)
> {
> MessageBox.Show("時間になりました。");
> timer1.Enabled = false;
> this.Activate();
> this.startbtn.Enabled = true;
> }
> viewtime();
> }
>
> int sec = 0; // 計測時間
>
> private void viewtime()
> {
> timelabel.Text = "" + sec / 36000 % 10 + sec / 3600 % 10 +
> ":" + sec / 600 % 6 + sec / 60 % 10 +
> ":" + sec / 10 % 6 + sec % 10;
> }
>
> private void timelabel_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
> {
> if (e.Delta > 0)
> {
> sec += 60;
> viewtime();
> }
> else
> {
> sec += 10;
> viewtime();
> }
> }
>
> private void timelabel_MouseClick(object sender, MouseEventArgs e)
> {
> timelabel.Text = "00:00:00";
> sec = 0;
> }
> }
>
引用返信 編集キー/
■61745 / inTopicNo.4)  Re[2]: 一時的にイベントを無効にしたい
□投稿者/ cielo (2回)-(2011/09/01(Thu) 13:26:39)
rainさん、ヴァンさん。
返答ありがとうございます。

ヴァンさんの助言で実現できました。
こんな簡単なことでしたが、思い付きませんでした。

お二方ともありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -