.NET 2.0 TextBoxコントロールからでもMouseDownをキャプチャする方法はありますか?継承されたControlクラスにイベントがあることは知っていますが、TextBoxでは公開されていません。イベントハンドラーをオーバーライドする方法はありますか?
また、MouseDownイベントが公開されているOpenNETCF TextBox2コントロールを試しましたが、何をしてもハンドラーが起動しません。
助言がありますか?
マウスを搭載した、どのようなクレイジーなモバイルデバイスがありますか?:)
はい、Windows Mobileには実際のマウスはありませんが、WindowsMobile.NETがマウスイベントをサポートしていないと誤解されています。画面上のクリックまたは移動は、引き続き「マウス」イベントと見なされます。これは、コードが完全なWindowsから簡単に移植できるようにするためにこのように行われました。そして、これはWindowsMobile固有の問題ではありません。WindowsのTextBoxコントロールには、ネイティブのマウスイベントもありません。この場合、たまたまWindowsMobileを使用していました。
編集:補足として... Windows Mobileは、組み込みデスクトップシステムやスリムターミナルサービスクライアントまたは「WinTerms」でよく使用されるWindowsCEコアで構築されているため、ハードウェアマウスをサポートしており、長い間使用されています。ほとんどのデバイスには、プラグを差し込むためのポートがありません。
.Net Frameworkによると、TextBoxのMouseDownイベントハンドラーがサポートされています。コードを実行しようとするとどうなりますか?
実際には、他のすべてのフォームコントロールと同様に、「コントロール」から継承するため、これだけが存在します。ただし、TextBoxクラスではオーバーライドされます(そして私が信じるプライベートに変更されます)。そのため、VisualStudioのIntelliSenseには表示されません。
ただし、実際には次のコードを記述できます。
textBox1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.textBox1_MouseDown);
コンパイルして正常に実行されます。唯一の問題は、TextBoxコントロールをタップしたときにtextBox1_MouseDown()が起動されないことです。これは、イベントが内部でオーバーライドされているためだと思います。イベントで何が起こっているかを内部で変更することすらしたくありません。他のイベントと同じようにカスタムコードを起動できるように、そのイベントに独自のイベントハンドラーを追加したいだけです。