DateTimePicker.Value プロパティが表示と一致しない

DateTimePickerを使用していると、
DateTimePicker.Value プロパティが表示と一致しないことがあります。
具体的には、DateTimePickerの中の値を直接キーボードで編集して、
その直後にLabelをクリックして、DateTimePicker.Value プロパティを参照する場合です。
カレンダーを表示させて選択する場合はうまくいきますが、
直接、編集して、そのままLabelをクリックするような場合は、
DateTimePicker.ValueChanged イベントがうまく発生しません。
Buttonの場合は大丈夫なようです。
Labelをクリックするようなことは、あまりないかもしれませんが、
ButtonだとTabでフォーカスが移ってしまうのが邪魔なときなどに、
LabelをButtonのかわりに使うことがあります。

Labelのクリックイベントでうまくいかないということは
他の処理でもうまくいかないことがあると思います。

これを回避するためには、適当なラベルを配置して、行いたい処理の最初に
そのラベルへフォーカスを移します。
仮にLabel1を配置した場合は、処理の最初にLabel1.Focusとすることで、
DateTimePicker.Value プロパティが表示されているものに更新されます。

Label1を隠したい場合に、Label1.Visible = False としてしまうとうまくいきません。
他のコントロールの後ろに隠すか、
Label1.Text = ""
Label1.BackColor = Color.Transparent
として見えなくしてください。
Labelの場合は、フォーカスを移しても、実際には移らないので便利です。
posted by VB.NET+MSDE+ActiveReports at 19:44 | Comment(1) | TrackBack(0) | VB.NET
この記事へのコメント
この件の解答がやっと見つかりました。
ありがとうございました。

しかし、何でこんな技術系のブログのコメ欄に厨房が沸いてんのかねぇ?
Posted by なまもの at 2011年03月04日 16:41
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのTrackBack URL
http://blog.sakura.ne.jp/tb/11581241