2011-10-24 2 views
2

私は視覚的に表示可能な領域に収まるものに入力されたテキストを制限することができる必要があるC#/ WinFormsリッチテキストボックスを持っています。私はそれを文字数で制限することができますが、ワードラップ、モノスペース以外のフォントのさまざまな文字幅などを考慮すると、望ましい効果が得られません。リッチテキストボックスのテキストの長さを目に見える程度に制限しますか?

イベントコールバックは、テキストは変わりますが、テキストが視認可能な領域を超えていることを知る方法が必要です。助言がありますか?

答えて

4

MeasureStringを使用すると、指定されたフォントの文字列の長さを判断できます。次に、それをテキストボックスの幅と比較します。

+0

素晴らしい方法... + 1 – Sandy

+0

私は馬鹿です。リッチテキストボックスです。オプションではありません。私は何とかそれを適用することができるかどうかを見るためにこれを見ている... LayoutAreaを要因とするメソッドは可能性のように思える.. – trycatch

1

の幅に達したときに停止するようにGraphics.MeasureStringを使用することができますあなたのリッチテキストボックスの可視領域にフィットするオフセット:

richTextBox1.TextChanged += (sndr, evnt) => 
{ 
    richTextBox1.Select(0, 0); 
    int pos = richTextBox1.GetCharIndexFromPosition(new Point(richTextBox1.Width, richTextBox1.Height)); 

}; 
0

私は現在、反対の(リッチテキストボックスにテキストセットに合わせてリサイズする)ことを試みているので、私はこの質問に遭遇しましたが、私はあなたが使うことができる関数GetPreferredSizeを見つけました。各正式な編集後にボックスに現在のRTFテキストを保存してから、次の編集コールGetPreferredSizeに新しいテキストを格納するためにはどれくらい大きなボックスが必要であるかを確認したいでしょう。大きすぎる場合は、保存したテキストに戻してください。

関連する問題