1

textboxwithをmultilinetrue に設定しています。合計 3 行で、1 行あたり 50max charactersに設定したいと考えています。50文字になったら2行目に飛ばしたい。私はいくつかの問題を抱えており、しばらくの間これに苦労しており、誰かが助けてくれるかどうか知りたいと思っていました.

MAX_LINE_COUNT = 3

Private Sub txtMsg_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtMsg.KeyDown

    If e.KeyCode = Keys.Enter Then
        e.SuppressKeyPress = (Me.txtMsg.Lines.Length >= MAX_LINE_COUNT)
    End If

End Sub
4

1 に答える 1

2

1 行あたりの最大文字数が共通の複数行のテキストを効果的に処理するには、クラスを拡張し、TextBoxクラス内のいくつかの項目をオーバーライドする必要がありますTextBox車輪を再発明する代わりに、 Is there a way to catch maximum length PER LINE and not allow user to input more characters if the max length PER LINE has been reached? への回答からコードにリダイレクトします。、それは受け入れられた回答ではないため、VB.NET の翻訳を以下に貼り付けます。

Public Class MaxPerLineTextBox
  Inherits TextBox
  Public Sub New()
    MyBase.Multiline = True
  End Sub

  Public Overrides Property Multiline() As Boolean
    Get
      Return True
    End Get
    Set
      Throw New InvalidOperationException("Readonly subclass")
    End Set
  End Property

  Public Property MaxPerLine() As System.Nullable(Of Integer)
    Get
      Return m_MaxPerLine
    End Get
    Set
      m_MaxPerLine = Value
    End Set

  End Property

  Private m_MaxPerLine As System.Nullable(Of Integer)

  Protected Overrides Sub OnKeyPress(e As KeyPressEventArgs)
    If Char.IsControl(e.KeyChar) Then
      MyBase.OnKeyPress(e)
      Return
    End If

    Dim maxPerLine As Integer
    If Me.MaxPerLine.HasValue Then
      maxPerLine = Me.MaxPerLine.Value
    Else
      MyBase.OnKeyPress(e)
      Return
    End If

    Dim activeLine As Integer = Me.GetLineFromCharIndex(Me.SelectionStart)
    Dim lineLength As Integer = Me.SelectionStart - Me.GetFirstCharIndexFromLine(activeLine)

    If lineLength < maxPerLine Then
      MyBase.OnKeyPress(e)
      Return
    End If

    e.Handled = True
  End Sub
End Class

上記のコードを使用するには、次のことを行う必要があります。

  1. 上記のコードを保持するために、ソリューションに新しいプロジェクトを作成します。
  2. 上記のコードを新しいプロジェクトに貼り付けてビルドします。
  3. エラーがなく、プロジェクトが正常にコンパイルされることを確認します。
  4. MaxPerLineTextBox コントロールがツールボックスに表示されます。そうでない場合は、Visual Studio を再起動してみてください。
  5. MaxPerLineTextBox をフォームにドラッグし、プロパティを設定します。
于 2013-08-26T19:44:41.720 に答える