DOBON.NET DOBON.NETプログラミング掲示板過去ログ

テキストボックスにオートスクロールを作る方法

環境/言語:[XP,C#]
分類:[.NET]

いつも見させて頂いています。
またまた初心者質問で申し訳ないですが

フォームに配置したテキストボックスにオートスクロールを付ける方法は
どのようにすればよいでしょうか?

ちなみにフォームのサイズ変更はしたくないので固定にしました。

お願い致します。
お疲れ様です。

とりあえず、Graphics.MeasureStringを使う方法しか
思いつきませんでした。
随所に手抜きしており完璧ではありませんが、
結構いい感じなので、試してみてください。

Public Class TextBoxEx
    Inherits TextBox

    Public Sub New()
        Me.Multiline = True
    End Sub

    Protected Overrides Sub OnSizeChanged(ByVal e As System.EventArgs)
        Me._helperSetScrollBar()
        MyBase.OnSizeChanged(e)
    End Sub

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
        Me._helperSetScrollBar()
        MyBase.OnTextChanged(e)
    End Sub

    Private Sub _helperSetScrollBar()

        Dim w As Integer = Me.ClientSize.Width
        Select Case Me.ScrollBars
            Case Windows.Forms.ScrollBars.Both, Windows.Forms.ScrollBars.Vertical
                w -= SystemInformation.VerticalScrollBarWidth
            Case Else
                ' 何もしない
        End Select

        Using g As Graphics = Me.CreateGraphics
            Dim sz As SizeF = g.MeasureString(Me.Text, Me.Font, w)
            If sz.Height > Me.ClientSize.Height Then
                Me.ScrollBars = Windows.Forms.ScrollBars.Vertical
            Else
                Me.ScrollBars = Windows.Forms.ScrollBars.None
            End If
        End Using

    End Sub

End Class
■No25468に返信(H.K.R.さんの記事)
TextBox.Multiline = true;
TextBox.ScrollBars = ScrollBars.Both;
TextBox.WordWrap = false;

かな?
■No25478に返信(Rukuさんの記事)
> ■No25468に返信(H.K.R.さんの記事)
> TextBox.Multiline = true;
> TextBox.ScrollBars = ScrollBars.Both;
> TextBox.WordWrap = false;
>
> かな?


Ruku様
H.K.R.様

有難うございました。
早速試して出来ました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板