0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VB.NETでテキストボックスの自動改行を実装する

Posted at

背景と目的

なぜ自動改行が必要なのか?

テキストボックスで入力を行う際、特定の条件で自動的に改行を入れたいケースがあります。例えば、

  • 指定した文字数ごとに改行を入れたい(チャットアプリやメモ帳など)

  • 句読点や括弧が行頭にこないように調整したい

  • 手動での改行は許可せず、自動的に整った文章を作成したい

通常の TextBox コントロールでは、Wordのような適切な改行処理は備わっていません。そのため、
プログラムでルールを決めて、自動的に改行を行う処理が必要になります。

本記事で実装する機能

今回の実装では、以下のような機能を備えた自動改行処理を作成します。

✅ 入力テキストの監視(リアルタイム処理)

  • TextChanged イベントを使い、ユーザーが入力するたびに処理を実行

✅ Enterキーを無効化

  • 手動での改行を禁止し、プログラムでのみ改行を制御

✅ 一定の文字数ごとに自動改行を挿入

  • 例)50文字ごとに改行を入れる

✅ 句読点や括弧が行頭にこないように調整

  • 「(【『 などが行の先頭にこないようにする

✅ バックスペースの処理を最適化

  • 改行の削除時に違和感のない動作をするように調整

第1章:テキストボックスの監視方法と基本的な改行処理

TextChanged イベントを使った入力監視

テキストボックスの内容が変更されたときに、自動的に処理を行うには TextChanged イベントを使用します。

Private Sub Textbox1_Changed(sender As Object, e As EventArgs) Handles Textbox1.TextChanged
    ' ここで入力内容を処理する
End Sub

これにより、ユーザーがテキストを入力するたびにイベントが発生し、処理を実行できます。

手動改行の無効化

手動で改行されると制御が難しくなるため、KeyPress イベントを使って Enter キーを無効にします。

Private Sub Textbox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Textbox1.KeyPress
    If e.KeyChar = ChrW(Keys.Enter) OrElse e.KeyChar = ChrW(Keys.LineFeed) Then
        e.Handled = True ' 改行キーを無効化
    End If
End Sub

文字数ごとの改行挿入

一定の文字数ごとに改行を入れるには、文字列を分割しながら処理する関数を作成します。

Private Function InsertLineBreaks(input As String, maxChars As Integer) As String
    Dim result As New List(Of String)()
    Dim currentLine As New System.Text.StringBuilder()
    Dim maxChars As Integer = 50 ' 一行当たりの最大文字数を設定
    
    For i As Integer = 0 To input.Length - 1
        ' テキストボックス内の文字を一文字ずつ変数に追加する
        currentLine.Append(input(i))
        
        ' 現在の行が最大文字数に達した場合
        If currentLine.Length >= maxChars Then
            ' リストに現在の行の文字列を追加する
            result.Add(currentLine.ToString())
            currentLine.Clear()
        End If
    Next

    ' 残った文字列を追加
    If currentLine.Length > 0 Then
        result.Add(currentLine.ToString())
    End If

    ' 結果を改行で連結して返す
    Return String.Join(vbCrLf, result)
End Function

次の章では、句読点や括弧の調整について解説します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?