MonthCalendarのイベント発生を抑えるには


bor  2005-09-02 00:46:51  No: 124693

[環境] VB.NET2003 on WindowsXP-SP2

MonthCalendar コントロールを配置したフォームを作り、フォームを開いた状態で放っておくと、
MonthCalendar の DateChanged イベントが定期的(2分ごと)に発生します。
この動作は MonthCalendar コントロールの仕様でしょうか?
仕様ではないなら、イベントを発生させないようにするにはどうすればよいでしょうか?

よろしくお願いします。


じゃんぬねっと  URL  2005-09-02 01:16:26  No: 124694

断りのないマルチポストは、自分のためにもやめておくべきでしょう。
http://www7.big.or.jp/~pinball/discus/vb/59477.html


ねろ  2005-09-02 02:12:57  No: 124695

結構ヒットしますが、何故かはわかりません。
http://www.google.co.jp/search?hl=ja&q=MonthCalendar+DateChanged+trouble&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=


ねろ  2005-09-02 02:27:17  No: 124696

一応見っけ、これでいいかどうか試してないが、
http://66.102.7.104/search?q=cache:l2VsHVe1VvgJ:www.windowsforms.net/Forums/ShowPost.aspx%3FtabIndex%3D1%26tabId%3D41%26PostID%3D5522+MonthCalendar++DateChanged+problem&hl=ja


魔界の仮面弁士  2005-09-02 23:05:48  No: 124697

ちなみにコレ、newsgourp等でも、昔から問題になっていた問題で、
実は VB6 の MonthView でも再現したりします。
(きっちり2分間隔でSelChangeイベントが発生する)

なので、.NETの問題というよりも、Windowsのコモンコントロール側に
原因があるという感じです。一体何なのでしょうね。

# MonthViewでの事例は、ここの過去ログにもあります。

なお、Spy++で監視していると、120秒間隔でタイマーメッセージが……。

[POST] WM_TIMER, wParam=2, lParam=0(wTimerID=2, tmprc=0)
[SEND] 0x204E(WM_USER+7246), wParam=0, lParam=0012FB14


uud  2005-09-03 01:31:44  No: 124698

ちょっとネタっぽくなりますけど
1分に一回くらいKillTimer呼び出すとか
MonthCalendarに使えるかどうかは調べてませんが。


さるべーじ  2005-09-03 02:42:36  No: 124699

Timer自体は当日の赤丸を更新するために2分ごとにマシン日付を
チェックするために発生しているので、まぁ仕様の範疇かと思います。

問題はそのタイミングでSelChange(確認したのがVB6なので)が
だだ漏れで発生しちゃう部分ですね。

なんかこれ単純なCommonControlのバグっぽいので、
突き止めるんならデバッグ用Windows環境立ててデバッグトレース
していくしかないかも。

VB6上での解決策で一番ツカえそぅだったのはこちら。
    http://www.tech-archive.net/Archive/VB/microsoft.public.vb.controls/2004-05/0361.html

最初の質問に戻って、ユーザが明示的に操作した時にだけイベントを
発生させたいなら、DateChangedではなくDateSelectedなどいかがでしょう。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加