- - PR -
DateTimePicker を当月内の年月日入力に使いたい。
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-10-03 10:34
WindowsXP、VB2005EE Access2003 でWindowsアプリケーションを開発中です。
ある年月日項目の設定を設定するのにDateTimePickerを使用しています。この DateTimePickerの設定年月日の範囲をPC内部タイマーの当月範囲の年月日に制 限したく、次のようにDateTimePicker1_ValueChangedのハンドラーに記述しま した。ところがメッセージが表示された後[OK]ボタンを押すと、再度連続し てメッセージが表示され暴走してしまいます。
ValueChangedを使うことが間違いなのでしょうか。 別の方法がありましたらよろしくご教示下さい。 | ||||||||
|
投稿日時: 2008-10-03 10:40
DateTimePicker の MinDateプロパティと MaxDateプロパティを操作すれば幸せになれると思います。
----- あ、画面操作中に月が変わったときのことも、一応考えておいたほうがいいかも。 [ メッセージ編集済み 編集者: rain 編集日時 2008-10-03 10:41 ] | ||||||||
|
投稿日時: 2008-10-03 10:49
rainさん、昨日は大変ありがとうございました。
おかげさまで、テーブルを新規に作成し、正常に動作させることが出来ました。 また、新たな質問に対して早速お答えいただき、感謝しています。 「DateTimePicker の MinDateプロパティと MaxDateプロパティを操作すれば」 とのご教示、早速設定してみます。 ---------10:53-以下を追加しました----------------------------------- MinDateプロパティに今月の1日と設定できるのでしょうか。設定方法を ご教示いただければ幸いです。 _________________ [ メッセージ編集済み 編集者: One.net 編集日時 2008-10-03 10:55 ] | ||||||||
|
投稿日時: 2008-10-03 11:03
例えばこんな感じ。 ソラで書いたので、文法が間違ってたらすみません。
MaxDateについては、DateTime.DaysInMonthプロパティを使う手もあるか。 | ||||||||
|
投稿日時: 2008-10-03 11:12
rainさん、ありがとうございます。
私も今、この画面のLoad時に次にょうに書いてうまくいきました Dim dt1 As DateTime = New DateTime(Year(Now()), Month(Now()), 1) DateTimePicker1.MinDate = dt1 これからMaxDateを設定してみます。ありがとうございました。 ------------1117-以下を追加しました------------------------ MaxDateも以下のように設定し、うまくいきました。助かりました。 Dim dt1 As DateTime = New DateTime(Year(Now()), Month(Now()), 1) DateTimePicker1.MinDate = dt1 DateTimePicker1.MaxDate = dt1.AddMonths(1).AddDays(-1) [ メッセージ編集済み 編集者: One.net 編集日時 2008-10-03 11:20 ] | ||||||||
|
投稿日時: 2008-10-03 11:50
奇跡的なタイミングでないと発生しないはずなので、
実際に問題になることはないと思いますが、 いちおう以下のようにした方がよいのではないでしょうか?
Dim nowDate As DateTime = Now() Dim dt1 As DateTime = New DateTime(Year(nowDate), Month(nowDate), 1) #年の境目の瞬間に実行された場合に #年は2008/12/31から、月は2009/01/01から取得される事態を避けるため [ メッセージ編集済み 編集者: よねKEN 編集日時 2008-10-03 11:51 ] | ||||||||
|
投稿日時: 2008-10-03 12:49
よねKENさん、ご指導ありがとうございます。
私もrainさんの言われた「画面操作中に月が変わった時の対応?」について月末操作が多く、 気にしていました。 なっるほど現時点の nowDate を取得して、このnowDateで新たな日付を作るのですか。 ありがとうございます。早速書き換えます。 --------13:35-追加記述しました------------------------------------- 投稿してから よねKENさんのご指摘は「画面操作中に月が変わった時の対応?」では なく、Year(Now())の演算と Month(Now())の演算の間に年度が変わった場合のことでしょうか。 すごいことまで考えなければいけないのですね。確かに発生したら、2008/01/01 となって しまい何が原因か調査しても解らなくなりますね。 [ メッセージ編集済み 編集者: One.net 編集日時 2008-10-03 13:36 ] |
1