0

System.Windows.Form.RichTextBox.NET Framework 2.0 で実行されている WinForm アプリケーションの通常のコントロールを使用して、ステータス ログを表示しています。Form と他のいくつかの子コントロールには がAutoSize=Trueあるため、アプリケーションは異なるセットアップで常に同じように見えるとは限りません。コントロールの正確なサイズを事前に知る方法はありませんが、とにかく、特定の各構成の比率 (フォントの外観)/(GUI の寸法) に関連するいくつかの影響があると思います。

それでは、最も動的なシナリオを説明しましょう。文字列の正確な最大長を知りたいのですが、指定された RichTextBox は、そのような RichTextBox が一般的で既知の等幅フォントとサイズを使用している同じ行に (境界線やワードラップを超えずに) 表示できます。

この結果を達成するための簡単な方法がない場合、奇妙なイベントが発生するまで段階的に成長するテスト文字列を挿入するなどのトリックを使用できるかどうかをとにかく知っていますか?

4

1 に答える 1

0

それは私が今まで得たものです。TextRenderer上記の質問で予想したクラスと戦略を使用しました。もちろん、コントロールが等幅フォントを使用している場合にのみ意味があります。それは私の問題でうまくいきますが、同じ目標を達成するためのより良い方法を誰かが知っているかどうか知りたいです. したがって、質問はまだしばらく開かれます。

int maxStringLength = GetMaxStringLengthPerLine(myRichTextBox);

int GetMaxStringLengthPerLine(RichTextBox textbox) {
   return GetMaxStringLength(textbox.Size.Width, textbox.Font);
}

int GetMaxStringLength(int width, Font font) {
   int i = 0;
   while(TextRenderer.MeasureText(new string('A',++i), font).Width<=width);
   return --i;
}
于 2013-10-24T21:16:48.870 に答える