tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: DateTimePickerにDoubleClickイベントを追加したい
投稿日: 2016/09/23(Fri) 10:14
投稿者Hongliang
> 「この API は、製品 インフラストラクチャをサポートしており、コードから直接使用されることを想定していません。」
>
> などと記述されていますが、これはどのような意味なのでしょうか?

大抵は、
「本来はprivateやinternalなどで利用者から見えないように作られるべきであるが、
言語やライブラリの仕様上publicやprotectedにせざるを得なかった」
ぐらいの意味です。
今回の場合、基底クラスであるControlクラスがDoubleClickイベントを定義しているため
必然的にDateTimePickerも同じイベントをAPIとして公開することになりますが、
DateTimePickerはDoubleClickをサポートしていないためこのような記述になっているのでしょう。

> hhttps://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.doubleclick(v=vs.90).aspx
> を見ると、継承元基本コントロールにはDoubleClickイベントは存在しているようですが、
> 下の方の表でDateTimePickerのDoubleClickイベントを見ると「なし」と書かれています。
> 継承されたときに削除されたのでしょうか?

仕様上、基底クラスの持っているメンバは必ず派生クラスも持っていなければなりません。
ですので、クラスとしては「削除」することはできません。
ただし、DoubleClickを発生させるコードをDateTimePicker内に記述しなければ、
たとえメンバにDoubleClickイベントを持っていてもそれは決して発生しません。
また、BrowsableAttribute属性を使えば、インテリセンスに表示させないといったことも可能です。

> 再実装することはできないのでしょうか?

DoubleClickの機能を自分で記述することにはなりますが、可能ではあります。
MouseUpで、直前のMouseUpからの経過時間とマウス移動距離が、SystemInformationの
DoubleClickTime/DoubleClickSize以下であれば、みたいな感じでしょうか。

ドロップダウンで表示されるカレンダーの方はまた面倒な話になりますが…。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。