DOBON.NET DOBON.NETプログラミング掲示板過去ログ

TextBoxを継承したクラスでのOnPaintの発生方法を教えてください

環境/言語:[VB.NET, C#]
分類:[.NET]

こんにちは
いつもお世話になっています。

TextBoxを継承したクラスでのOnPaintの発生方法を教えてください。

------------------------------------------------------

TextBoxを継承した次のクラスではOnPaintが発生しない。

 public class TestTextBox : System.Windows.Forms.TextBox
  以下省略

 protected override void OnPaint(PaintEventArgs pe)
 {
   ここに処理を書く // ここに来ない
 }

**--------------------

全く同じ書き方でラベルを継承した次のクラスではOnPaintは発生します。
(継承後のクラス名は特に関係ないはずです)

 public class TestTextBox : System.Windows.Forms.Label
 以下省略

 protected override void OnPaint(PaintEventArgs pe)
 {
   ここに処理を書く // ここにくる
 }

TextBoxとLabel のコントロールの違いとは思うのですが
どうしてもTextBoxでOnPaintを発生させる事ができません。
すみませんが発生させる方法を宜しくお願いします。
平ちゃんさん、こんばんは。

以下のページからの引用です。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbtskinheritingfromotherwfccontrols.asp
−−−−−−−−−−−−−−
メモ OnPaint をオーバーライドしても、すべてのコントロールの外観を変更できるわけではありません。描画がすべて Windows によって行われるコントロール (Textbox など) は、OnPaint メソッドを呼び出さないため、カスタム コードを使用しません。OnPaint メソッドを使用できるかどうかを確認するには、変更するコントロールの説明を参照してください。コントロールにメンバ メソッドとして OnPaint がない場合、このメソッドをオーバーライドして外観を変更することはできません。
−−−−−−−−−−−−−−

TextboxのOnPaintは利用できないようです。
■No8070に返信(morさんの記事)
> 平ちゃんさん、こんばんは。
>
> 以下のページからの引用です。
>
> http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbtskinheritingfromotherwfccontrols.asp
>
> TextboxのOnPaintは利用できないようです。
>

morさん 有難うございます。
確かにご指摘の通りに書いてありました。

MSDN ヘルプは細かいところまで書ききれないと言うことですね。
以下のページにはいかにもプロテクト メソッドで利用できるように
メンバとして書いてあります。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformstextboxmemberstopic.asp

特に概観をカスタマイズする訳でもなく Multiline で使用するときに
テキスト領域にグラフィックス描画したかっただけなんです。
(派生クラスにすればユーザーコントロールとして登録できる)

そうなるとウインドウメッセージを利用して、グラフィックス描画を
すると言うことでしょうか。
なんか難しそう。
前に似たような質問がありました。

カスタムコントロールの再描画について
http://dobon.net/vb/bbs/log3-12/7160.html

ただしこの方法ではmorさんがおっしゃっているように、外見を全く変えることは出来ないでしょう。
2004/12/17(Fri) 10:43:43 編集(投稿者)

■No8074に返信(管理人さんの記事)
> 前に似たような質問がありました。
>
> カスタムコントロールの再描画について
> http://dobon.net/vb/bbs/log3-12/7160.html
>
> ただしこの方法ではmorさんがおっしゃっているように、外見を全く変えることは出来ないでしょう。


私の場合この方法で十分です。

管理人様 有難うございます。

今後も宜しくお願いします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板