- 題名: テキストボックス、リッチテキストボックスで折り返し表示
- 日時: 2008/12/15 22:25:15
- ID: 23606
- この記事の返信元:
- (なし)
- この記事への返信:
- [23608] Re[1]: テキストボックス、リッチテキストボックスで折り返し表示2008/12/16 0:29:29
- ツリーを表示
1つの方法として、見た目だけごまかす方法が使えそうです。
・枠線付きで背景が白いLabelをFormに配置
・そのLabelの枠内の左側領域に、枠線が無いTextBoxを配置
サンプルを書いてみました。参考になれば幸いです。
# 指定した文字数で折り返すTextBoxの横幅は、
例えばGraphics.MeasureStringメソッドを使えば計算できます。
Public Class WordWrapTextBoxTestForm
Inherits Form
' 巾の狭い、枠線無しTextBox
Dim WithEvents TextBox1 As New TextBox
' 幅広の、枠線付きLabel
Dim WithEvents Label1 As New Label
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
Me.Text = Me.GetType.Name
Me.ClientSize = New Size(500, 400)
With Me.Label1
.BackColor = SystemColors.Window
.BorderStyle = BorderStyle.FixedSingle
.AutoSize = False
.Bounds = New Rectangle(100, 50, 350, 150)
End With
' TextBoxを、Labelの枠線内の左側領域に配置する
With Me.TextBox1
.Text = New String("あ"c, 70)
.Multiline = True
.BorderStyle = BorderStyle.None
.Width = 200 ' ←文字数にあわせて適切に設定してください
.Location = New Point(Me.Label1.Left + SystemInformation.BorderSize.Width, _
Me.Label1.Top + SystemInformation.BorderSize.Height)
.Height = Me.Label1.Height - 2 * SystemInformation.BorderSize.Height
End With
Me.Controls.AddRange(New Control() {Me.TextBox1, Me.Label1})
Me.TextBox1.BringToFront()
MyBase.OnLoad(e)
End Sub
End Class
分類:[.NET]
こんにちは
初歩的なことかもしれませんが、教えてください。
テキストボックス、または、リッチテキストボックスにて、マルチラインが有効な時に、指定した横方向の文字数折り返し表示を実装したいと思っています。
たとえば、横方向は60文字(全角)で折り返すとした場合、コントロールの大きさにかかわらず、60文字で折り返して表示したいです。
WordWrapプロパティでは、文字数を指定できず、どういう風にコードを組み立てたらよいかが分かりません。
サンプルや参考になりそうな情報がありましたら、お教えいただけると助かります。
よろしくお願いいたします。