C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: TextBoxのスクロールバー自動表示


(過去ログ 130 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■77200 / inTopicNo.1)  TextBoxのスクロールバー自動表示
  
□投稿者/ こういち (10回)-(2015/09/22(Tue) 01:36:18)

分類:[VB.NET/VB2005 以降] 

テキストボックスのMultilineをTrueに設定し、複数行表示をできるようにしていますが、
文字表示がテキストボックス内に収まらない場合のみ縦スクロールバーを表示するようにしたいと考えております。

良い方法がわからず、いろいろ考えてTextBox1の文字が変わった都度、イメージオブジェクトにテキストを描写した高さを測って、スクロールバーの表示を変えています。
ただ、TextBoxの内部スペースや、文字フォント・サイズにより正確ではなく、都度描写計測するのは非効率ですので、ほかに良い方法はありますでしょうか?

ご教示いただければ幸いです。


参考まで、現在のコードは以下のとおりです。

Public Class Form1
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim canvas As New Bitmap(TextBox1.Width, TextBox1.Height)
        Dim g As Graphics = Graphics.FromImage(canvas)

        Dim sf As New StringFormat
        Dim DrawHeight As Integer = g.MeasureString(TextBox1.Text & vbCrLf, TextBox1.Font, TextBox1.Width, sf).Height
        sf.Dispose()
        g.Dispose()

        If TextBox1.Height < DrawHeight And TextBox1.ScrollBars <> ScrollBars.Vertical Then
            TextBox1.ScrollBars = ScrollBars.Vertical
        ElseIf TextBox1.Height >= DrawHeight And TextBox1.ScrollBars <> ScrollBars.None Then
            TextBox1.ScrollBars = ScrollBars.None
        End If

        TextBox1.ScrollToCaret()
    End Sub
End Class

引用返信 編集キー/
■77201 / inTopicNo.2)  Re[1]: TextBoxのスクロールバー自動表示
□投稿者/ ぶなっぷ (52回)-(2015/09/23(Wed) 11:09:06)
レスがつかないようなので、一つアドバイス。
TextBoxでなく、RichTextBoxを使用すれば最初からそういう仕様です。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -