テキストサイズがテキストボックスのスペースよりも大きい場合にのみスクロールバーが表示されるように、Windowsフォームのテキストボックスの垂直スクローラーを設定する方法を教えてください。
ありがとう
または、textBox1 が複数行で、たとえば 20 行を含む場合:
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Split('\n').Length > 20)
textBox1.ScrollBars = ScrollBars.Vertical;
else
textBox1.ScrollBars = ScrollBars.None;
}
私が考えることができる1つの方法は、テキストボックスのフォントを、Lucida Console
.
次に、テキスト ボックスの最後に到達するために必要な文字数を測定します。
したがって、その数がわかっているTextChanged
場合は、テキストに最大数を超える場合にのみスクロール バーを設定するメソッドをイベントに追加します。
private void textBox1_TextChanged(object sender, EventArgs e)
{
int MaxChars = 10; //suppose that's the maximum
if (textBox1.Text.Count() > MaxChars)
textBox1.ScrollBars = ScrollBars.Vertical;
else
textBox1.ScrollBars = ScrollBars.None;
}
MaxChars
また、次のような計算もできます。
double param1 = figure out this number;
double param2 = figure out this number too;
int MaxChars = (int)(Math.Floor(param1*textBox1.Width - param2));
このようにして、コンポーネントのサイズを動的に変更できます。
TextBox
a の内側をラップしてScrollViewer
に設定VerticalScrollBarVisibility="Auto"
できScrollViewer
ます。このコードは動作します (Visual Studio 2012 & .NET 4.5 でテスト済み):
<StackPanel>
<ScrollViewer Height="100" VerticalScrollBarVisibility="Auto">
<TextBox TextWrapping="Wrap"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Hidden">
</TextBox>
</ScrollViewer>
</StackPanel>