DOBON.NETプログラミング掲示板過去ログ
クローズイングイベント
題名: クローズイングイベント
著者: DEG
日時: 2003/08/13 17:09:26
ID: 320
この記事の返信元:
(なし)
この記事への返信:
[324]
Re[1]: クローズイングイベント
よねKEN
2003/08/14 9:33:12
ツリーを表示
分類:[.NET]
ピクチャーボックスのマウスダウンでフラグがクリアされるまで
ループする処理を行っていますが
Do While フラグ
System.Threading.Thread.Sleep(1)
Application.DoEvents()
Loop
ループ中に、フォームのペケボタンを押した場合、
マウスダウンするまで、クローズイングイベントが待機し
マウスダウンでループを抜け、アイドル状態になってからイベントが
発生するみたいなのですが
クローズイングイベントより先に発生するするイベント
または、現在ペケボタンが押されていることを知るフラグは
ないでしょうか
題名: Re[1]: クローズイングイベント
著者: よねKEN
URL:
http://www5b.biglobe.ne.jp/~yone-ken/
日時: 2003/08/14 9:33:12
ID: 324
この記事の返信元:
[320]
クローズイングイベント
DEG
2003/08/13 17:09:26
この記事への返信:
[326]
Re[2]: クローズイングイベント
DEG
2003/08/14 17:21:06
ツリーを表示
#質問そのものへの回答ではないですが
> ピクチャーボックスのマウスダウンでフラグがクリアされるまで
> ループする処理を行っていますが
>
> Do While フラグ
> System.Threading.Thread.Sleep(1)
> Application.DoEvents()
> Loop
Windowsアプリはイベントドリブンなので、
こういう独自ループで流れを止めるような処理ロジックは組まない方がよいです。
この方法は、VB.NETでも旧VBでもお勧めできない方法です。
> ループ中に、フォームのペケボタンを押した場合、
> マウスダウンするまで、クローズイングイベントが待機し
> マウスダウンでループを抜け、アイドル状態になってからイベントが
> 発生するみたいなのですが
処理ロジックが動作しているため、フォームが閉じたくても閉じられず、
そのためClosingイベントが待ち状態になるではないでしょうか?(想像)
> クローズイングイベントより先に発生するするイベント
> または、現在ペケボタンが押されていることを知るフラグは
> ないでしょうか
サブクラス化(.NETの場合はWndPrcメソッドのオーバーライドでできます)して
メッセージを拾えば、Closingの前に何らかのメッセージは届いているかもしれませんが、
上に書いたように独自ループで待機するという方針を変更された方がよいと思います。
題名: Re[2]: クローズイングイベント
著者: DEG
日時: 2003/08/14 17:21:06
ID: 326
この記事の返信元:
[324]
Re[1]: クローズイングイベント
よねKEN
2003/08/14 9:33:12
この記事への返信:
(なし)
ツリーを表示
よねKENさん、アドバイスありがとうございます
> Windowsアプリはイベントドリブンなので、
> こういう独自ループで流れを止めるような処理ロジックは組まない方がよいです。
> この方法は、VB.NETでも旧VBでもお勧めできない方法です。
一連の作業の中で、何度もユーザーにピクチャーボックス上の点の入力を求める
必要があるため、入力プロンプトを表示してクリックした座標を返す関数を作り
その中での待ちなので、ボタンのようにユーザーが不定期にクリックしてから
それに応じた処理をするのとは異なります
ダイアロクなんかだと、待ってくれますよね
イベントで解除するまで、中断させるクラスがあればよいのですが
ヘルプでそれらしいのもあったのですが、解説が理解できなかったので
安易な方法をとってしまいました
> サブクラス化(.NETの場合はWndPrcメソッドのオーバーライドでできます)して
> メッセージを拾えば、Closingの前に何らかのメッセージは届いているかもしれませんが、
NETでのサブクラス化は、簡単らしい記事を見たように思います
もうすこし調べて、超簡単なようならその方向でいこうかと思います
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
ピクチャーボックスのマウスダウンでフラグがクリアされるまで
ループする処理を行っていますが
Do While フラグ
System.Threading.Thread.Sleep(1)
Application.DoEvents()
Loop
ループ中に、フォームのペケボタンを押した場合、
マウスダウンするまで、クローズイングイベントが待機し
マウスダウンでループを抜け、アイドル状態になってからイベントが
発生するみたいなのですが
クローズイングイベントより先に発生するするイベント
または、現在ペケボタンが押されていることを知るフラグは
ないでしょうか