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

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

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

Re[2]: UpDownBase 内 TextBox のメッセージを..


(過去ログ 101 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■60706 / inTopicNo.1)  UpDownBase 内 TextBox のメッセージを..
  
□投稿者/ Ruku (2回)-(2011/07/15(Fri) 15:56:01)

分類:[C#] 

[.NET Framework 4]

現在、TextBox から派生したコントロール (TextBoxEx) があります。
この TextBoxEx に、NumericUpDown のようなスピンボタンを実装したいと思っています。

そこで、TextBox から派生さるのをやめて UpDownBase から派生させようと思いました。
ここで問題となったのが、TextBoxEx はクリップボードからの貼り付けの制御など (他にも) を行うために、WndProc メソッドをオーバーライドしていることです。

UpDownBase から派生させた場合、このメッセージを捕まえることができません。
# UpDownBase はコンテナコントロールで、子コントロールに TextBox を含んでいる。
# 子コントロールのメッセージは処理できない (はず)。

UpDownBase が内部に持っている TextBox を TextBoxEx に置き換えられれば最も楽そうですが、そんな方法は分かりません。
# むりやりできたとして、UpDownBase の実装に問題がでない自信も持てない。

そのため、この方法は一旦諦め、TextBoxEx に自前のスピンボタンを乗せてみようと思いました。
この際、なるたけ標準コントロールと外観を同じにしたいため、UpDownButtons (UpDownBase で使用されているも参照できず) の見た目で実装したいです。
が、上記の通りコントロールは参照できず、〜〜Renderer クラスも見当たりません。


手段は上記の手段にこだわっておりません。
上記手段での解決方法、または別のアプローチで解決する術があるでしょうか。


よろしくお願いします。
引用返信 編集キー/
■60708 / inTopicNo.2)  Re[1]: UpDownBase 内 TextBox のメッセージを..
□投稿者/ Hongliang (791回)-(2011/07/15(Fri) 16:26:38)
> UpDownBase から派生させた場合、このメッセージを捕まえることができません。
> # UpDownBase はコンテナコントロールで、子コントロールに TextBox を含んでいる。
> # 子コントロールのメッセージは処理できない (はず)。

NativeWindow クラス(の派生クラス)を使うことで既存インスタンスをサブクラス化可能です。TextBox のインスタンスが取得できるなら一番手っ取り早いでしょう。
引用返信 編集キー/
■60710 / inTopicNo.3)  Re[2]: UpDownBase 内 TextBox のメッセージを..
□投稿者/ Ruku (3回)-(2011/07/15(Fri) 19:52:54)
No60708 (Hongliang さん) に返信
>>UpDownBase から派生させた場合、このメッセージを捕まえることができません。
>># UpDownBase はコンテナコントロールで、子コントロールに TextBox を含んでいる。
>># 子コントロールのメッセージは処理できない (はず)。
>
> NativeWindow クラス(の派生クラス)を使うことで既存インスタンスをサブクラス化可能です。TextBox のインスタンスが取得できるなら一番手っ取り早いでしょう。

ありがとうございます。
NativeWindow を継承したクラスを作成することで対応できました。

# 知らないだけで便利な機能がまだまだあるなぁ。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -