0

VBを使用して.NETを自分で制御しようとしていますが、やりたいことを達成するのに問題があります。実際、私はテキストボックスクラスから継承するコントロールを作成していますが、それに加えようとしている唯一の変更は、コントロールが目に見えていっぱいになると、ユーザーはそれ以上入力できないということです。それで:

  • スクロールバーは表示されません。
  • 拡張TextBoxは、複数行または単一行にすることができます。
  • 拡張TextBoxは、フォントやフォントサイズが異なる場合があります。

現在、私が使用している手法は、graphics.measurestringを使用して、文字列の幅と高さを含むsizeFを取得し、テキストボックスコントロールの高さと幅と比較します。これはすべてKeyDownイベントで行われます(これが最善の解決策かどうかはわかりません)。幅に対しては問題なく動作させることができますが、複数行のテキストボックスで高さを正しく表示できないようです。誰かがこのようなものを扱ったことがあるなら、それがどのように行われるべきかについての説明が必要です。ありがとうございました。

4

1 に答える 1

0

問題は3番目の要件です。

The extended TextBox may have different fonts and font sizes. 

つまり、各行の高さを、その行のどの文字が最大のフォントサイズであるかを把握する必要があります。また、そのことを知るには、各行のどの文字も知っている必要があります。(驚くべきことに)異なるフォントは同じポイントサイズで異なる高さを持つ可能性があるため、さらに悪化します。比例間隔のフォントの各文字の幅が異なるという事実がなければ、すべてが機能する可能性があります。

また、上付き文字と下付き文字をサポートする場合は...

于 2009-06-26T04:54:50.270 に答える