3

テキストサイズがテキストボックスのスペースよりも大きい場合にのみスクロールバーが表示されるように、Windowsフォームのテキストボックスの垂直スクローラーを設定する方法を教えてください。

ありがとう

4

5 に答える 5

3

または、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;
}
于 2015-12-12T19:37:31.317 に答える
2

私が考えることができる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));

このようにして、コンポーネントのサイズを動的に変更できます。

于 2013-05-07T17:25:16.620 に答える
0

TextBoxa の内側をラップして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>
于 2013-05-07T17:34:12.293 に答える