- - PR -
DateTimePickerの日付に一桁入力したときの処理
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-10-28 16:31
こんにちは。
困っているのでご教授ください。 DateTimePickerの日付に、"2004/10/10"と入っている状態で、日に"9"と一桁だけ入力をして、Validatingイベントが起きると、Valueは9日を認識せず"2004/10/10"のままとなってしまいます。 Validatingイベントを使用せず、LostFocusイベントで処理をすれば2004/10/09"の日付を取得できるのですが、Validatingイベントで"2004/10/09"と認識できる方法はあるのでしょうか。 よろしくお願いします。 ========================================================================= ※下のプログラム例では、日付に"2004/10/10"⇒"9"を入力したにもかかわらず、"未来"が表示されます。 Private Sub DateTimePicker1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles DateTimePicker1.Validating With CType(sender, DateTimePicker) If .Value < CDate("2004/10/10") Then MessageBox.Show("過去") Else MessageBox.Show("未来") End If End With End Sub | ||||
|
投稿日時: 2004-10-28 19:26
追記です。
その後調べていたのですが、エンターキー押下時に次のコントロールへ移動する処理を入れていますが、そのエンターキーを押したときのみ起こっています。 何かお分かりの方、よろしくお願いします。 ====================================================== Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs) MyBase.OnKeyDown(e) Select Case e.KeyCode Case Keys.Return ' 次のコントロールへ SelectNextControl(ActiveControl, True, True, True, True) 'TextBox1.Focus() End Select MyBase.OnKeyDown(e) End Sub | ||||
|
投稿日時: 2004-10-28 21:04
やりたいことは、「今日以降の日付を、入力禁止にする」とかじゃないですか?だったら、MaxDate, MinDateというプロパティがあるのですが、これは利用できませんか? _________________ | ||||
|
投稿日時: 2004-10-28 21:44
南部です。 09って入力すればいけるはずですが、まあ、現実的ではないですね。 2桁入れるか、現在入力しているフィールド(コントロールではない) から移動することで値が確定する以上、フォーカスを移すと 1. Leave 2. Validating 3. Validated 4. ValueChanged (ここで、確定) 5. LostFocus となると予測されますので、 つまり、 > Validatingイベントで"2004/10/09"と認識できる方法はあるのでしょうか。 これは無理だと思います。 #なんで、Validatingで? | ||||
|
投稿日時: 2004-10-28 22:03
南部です。
DateTimePickerに、次のフィールドを選択するメソッドがなかったので、 無理だと即答してしまいましたが、 次のコントロールへフォーカスを移す前に、 次のフィールドを選択させればいいので、
というのは、どうでしょう? | ||||
|
投稿日時: 2004-10-28 23:04
Jittaさん、南部さん、ありがとうございました。
南部さんの方法で、解決することができました。 ただ、この1行でなぜ解決した解っていないので、調べてみようと思います。(^^; SendKeys.SendWait("{right}") また何かありましたら、よろしくお願いします。 | ||||
1
