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


bor  2005-09-01 15:46:51  No: 124693  IP: [192.*.*.*]

[環境] VB.NET2003 on WindowsXP-SP2

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

よろしくお願いします。

編集 削除
じゃんぬねっと  URL  2005-09-01 16:16:26  No: 124694  IP: [192.*.*.*]

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

編集 削除
ねろ  2005-09-01 17:12:57  No: 124695  IP: [192.*.*.*]

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

編集 削除
ねろ  2005-09-01 17:27:17  No: 124696  IP: [192.*.*.*]

一応見っけ、これでいいかどうか試してないが、
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 14:05:48  No: 124697  IP: [192.*.*.*]

ちなみにコレ、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-02 16:31:44  No: 124698  IP: [192.*.*.*]

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

編集 削除
さるべーじ  2005-09-02 17:42:36  No: 124699  IP: [192.*.*.*]

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

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

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

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

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

編集 削除