C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■90119 / 1階層)  DateTimePickerでホイールを使う方法
□投稿者/ Azulean (1029回)-(2019/02/10(Sun) 08:03:16)
すでに動いているということと、「 System.Windows.Forms.SendKeys.Send」があるということなので、Windows Forms だと仮定しておきます。

No90110 (やーまー さん) に返信
> DateTimePickerでホイールを回すことで数値を変えられるようにしたいのですが
(略)
> これをゼロよりも下に回しても下がらず
> 23や59よりも上に回してもそれ以上上がらないようにしたいのですが
> どのようにしたら良いですか?

現状は、DateTimePicker コントロールの自身の上下キー操作の仕様に依存(委譲)したものになっています。
こういったケースで考えられる案としては以下のものがあります。

 1. 上下キーの動き自体を制御したい場合は DateTimePicker のコントロールを継承するか、メッセージのフックが必要になります。
 2. ホイール時のみ、その数値またぎを排除したいのなら、Value プロパティを見て、SendKey を呼ぶ・呼ばないを分ければ良いことになります。

ただし、実際には DateTimePicker コントロールが Windows のコモンコントロール(SysDateTimePick32)を .NET で使えるようにラップしたものであるため、細かな動きの制御は困難です。
また、OS によって DateTimePicker の動きも結構変わる事情もあります。
このため、細かなカスタマイズを目指すのは大変だと思います。
(カスタマイズを頑張るなら、全部自作するぐらいの勢いが必要かもしれない)


現状をベースに実現する方向で考えた場合、厳しいのはどの位置(時分秒など)が選択されているかを知る方法です。
ざっと以下のページも読み直してみましたが、公開されていなさそうでした。
https://docs.microsoft.com/en-us/windows/desktop/controls/date-and-time-picker-control-reference

これがわかるのなら、現在値とホイールの方向から無視 or キー入力と制御できるとは思いますが…。
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←DateTimePickerでホイールを使う方法 /やーまー →Re[2]: DateTimePickerでホイールを使う方法 /やーまー
 
上記関連ツリー

DateTimePickerでホイールを使う方法 / やーまー (19/02/09(Sat) 14:03) #90110
Re[1]: DateTimePickerでホイールを使う方法 / WebSurfer (19/02/09(Sat) 23:38) #90118
DateTimePickerでホイールを使う方法 / Azulean (19/02/10(Sun) 08:03) #90119 ←Now
  └ Re[2]: DateTimePickerでホイールを使う方法 / やーまー (19/02/11(Mon) 12:22) #90125
    └ Re[3]: DateTimePickerでホイールを使う方法 / やーまー (19/02/11(Mon) 12:52) #90126
      └ Re[4]: DateTimePickerでホイールを使う方法 / Azulean (19/02/11(Mon) 18:12) #90127
        └ Re[5]: DateTimePickerでホイールを使う方法 / やーまー (19/02/11(Mon) 19:48) #90128
          └ Re[6]: DateTimePickerでホイールを使う方法 / Azulean (19/02/11(Mon) 21:06) #90129
            └ Re[7]: DateTimePickerでホイールを使う方法 / やーまー (19/02/11(Mon) 21:23) #90130 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信