• ベストアンサー

C# テキストボックスについて

フォームに置いたテキストボックスに フォーカスを入れると カーソルが点滅するごとに,オーバーライドした OnPaintのハンドラーにイベントが引っかかります。これは当然のことなのでしょうか? カーソルが点滅したぐらいでPaint処理をするのはわずらわしいし不都合がある場合があります。 なので,イベントが引っかからない(起きない)ようにするか,または OnPaintハンドラー内において Paintイベントが起きたのはテキストボックスであるということを知る方法はないのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

オーバーライドしたのはFormクラスのOnPaint()メソッドですか? 再描画不要な場合ならば走行しませんが。 また、Form.ActiveControlプロパティによって、現在アクティブな コントロールを得ることができますから、OnPaint()内でそれを 利用して判定可能と思われます。

kwmvtz
質問者

お礼

お礼遅くなりました。 テキストボックスからの呼び出しにより何度も同じOnPaint処理を繰り返すという今回の問題は 「 ActiveControlプロパティ」を利用することで 阻止することができました。 ありがとうございます。 元々テキストボックスコントロールがこんなに何度も細かくPaintイベントを起こしているものとは知りませんでした。 ところで >再描画不要な場合ならば走行しませんが。 とおっしゃっておられる事についてなのですが,これはプログラムの作り方によってOnPaintハンドラーそのものに入らないようにできるのではないのかなどと妄想してしまいましたがいかがなもので御座いますやら。 なお私C#に浅いので確かでないのですが override OnPaint()は class Form1:Form の中に置いたものであります。

関連するQ&A