- - PR -
【Windows】C#.NET DateTimePicker のカストマイズ
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-06-25 18:13
お世話になっております
DateTimePicker で表示されるカレンダーを ShowDialogで個別のカレンダー画面を表示しろという要望があります DateTimePickerを継承して、WndProcにて左クリック時に カレンダー画面.ShowDialog(); とやってみましたが、フォーカスがあたらず カレンダー画面.ShowDialog(); This.Focus(); とやってみましたが カレンダー画面から、コントロールに戻った際に 年度の所に フォーカスが当たるようになりました 通常のDateTimePicker での動きと少し変わってきてしまう事と そもそも、WndProc にて 対処するのは如何なものかと 思ったのですが (標準のカレンダーで満足して頂けれ良いのですが 日付未入力の状態を実現したいらしい nullableDateTimePicker が欲しいらしい) WndProc以外で 左クリックでShowDialog Null入力を可能にする うまい方法はないのでしょうか ご教授の程、よろしくお願いいたします 追記 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=45150&forum=7 の情報はみました 時期すでに 遅しで Valueプロパティの型を Object型に変更ができません すみません 勝手にしろ! と言われそうですが よろしくお願い致します [ メッセージ編集済み 編集者: 七 編集日時 2008-06-25 18:35 ] | ||||
|
投稿日時: 2008-06-25 18:30
要望がよくわからなかったのですが、
NullableDateTimePickerではだめな理由があったということですか? | ||||
|
投稿日時: 2008-06-25 18:40
rainさん レスありがとうございます
追記が遅れてしまったので 前後して 申し訳ないです Focusの動きがおかしいまま 一旦 リリースされてしまった部品のため 使用側に 修正依頼ができない状態になってしまってます 終盤に参入したため 経過状況は 把握していないのですが・・・・ | ||||
|
投稿日時: 2008-06-25 18:45
質問をよく理解できてないのですが、仮にNullを入力された場合、Valueは何を返すつもりなのでしょうか?
| ||||
|
投稿日時: 2008-06-25 21:14
すみません ソース内容をちゃんと読み取ってなかったです Value は Object型になってました http://japan.internet.com/developer/20050822/25.html ここにあるソースに似通ったもので作成されています ただし WndProc にて 左クリック押下時に ShowDialog にて カレンダーフォームを表示させています [ メッセージ編集済み 編集者: 七 編集日時 2008-06-25 21:16 ] | ||||
|
投稿日時: 2008-06-25 23:09
現状は標準のDateTimePickerを使用しているのですよね?
ってことはValueはDateTime型です。 それをリンクのNullableDateTimePickerに変更するとValueがObject型になってしまうので採用できないってことだと思いました。 しかし、実現したいことはNullを許可したDateTimePickerなのですよね? そうすると、Nullが入力された時、DateTime型のValueプロパティは何を返すのか疑問に思って質問しました。 DateTimeは構造体なのでNullは返せませんから。。。 | ||||
|
投稿日時: 2008-06-26 11:44
ありがとうございます おっしゃる通りです 「実現したいことはNullを許可したDateTimePickerなのです」 この事により、カレンダーを、Nullを入力するためのボタンが 存在する From を作成し DateTimePickerを継承した カスタムコントロールの中で 左クリックした時に、そのFormを ShowDialog しています このShowDialog を WndProc にて行っているため カレンダー表示後、日付を取得した後の、フォーカスの移動が 左クリック前に、あった、フォーカス位置に移動します おまけに、一旦、NULLを設定してしまった カスタムコントロールに 対して、再度、日付を設定した後のフォーカス移動時には そのコントロールにフォーカスが当たっても その後、ずっと、ブルーにはならなくなります たぶん、現在の動き(左クリックにてカレンダーフォームを表示する仕様)は 変えられない状況にあるという事らしいです [ メッセージ編集済み 編集者: 七 編集日時 2008-06-26 11:46 ] | ||||
|
投稿日時: 2008-06-26 12:13
実はまだ現状や、Nullが入力されたことを親画面へ反映する手段などさっぱりわかっていませんが、WndProc じゃなくて DateTimePicker の Enter イベントで日付入力用のダイアログ? を表示すればよいのではないでしょうか。
# そういえば、どうやって DateTimePicker のドロップダウンを無効にしているんだろう |