【问题标题】:Editing multiple lines in TextBox在 TextBox 中编辑多行
【发布时间】:2018-06-10 20:15:42
【问题描述】:

我希望我的程序将一个字符串输入到 TextBox 中,然后将其转换为模式。这是我当前的代码:

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    For Each line As String In TextBox1.Lines
        TextBox1.Text.Insert(0, """")
        TextBox1.Text.Insert((TextBox1.Text.Length), """")
        TextBox2.AppendText(line & vbCrLf)
    Next
End Sub

我不希望对整个 TextBox 进行这些更改,而是对每一行进行更改。所以

1111
1111

会变成

"1111"
"1111"

而不是

"1111
1111"

【问题讨论】:

    标签: vb.net multiline multilinestring


    【解决方案1】:

    您将无法 for-each 它,因此您必须遍历您的 Lines 集合。向后更容易做到这一点,因为插入文本会改变索引位置等等,所以试试这种方式:

    For i As Integer = TextBox1.Lines.Count - 1 To 0 Step -1
      If TextBox1.Lines(i).Length > 0 Then
        Dim startPos As Integer = TextBox1.GetFirstCharIndexFromLine(i)
        TextBox1.Select(startPos, TextBox1.Lines(i).Length)
        TextBox1.SelectedText = String.Format("{0}{1}{2}", """", TextBox1.Lines(i), """")
      End If
    Next
    

    【讨论】:

    • 这很好用,但您介意解释一下它是如何工作的吗?谢谢!
    • 你可以通过GetFirstCharIndexFromLine函数获取每行的第一个字符索引。我所做的就是突出显示从该位置开始的文本,并使用该行的文本长度,然后用新文本替换整个内容。
    • 更有意义!感谢您抽出宝贵时间帮助我!
    • 不错的答案!虽然我有一个想法:According to the documentation Lines 属性都是Read/Write,所以在技术上不应该这样做:TextBox1.Lines(i) = String.Format("{0}{1}{2}", """", TextBox1.Lines(i), """")
    • @VisualVincent Lines“集合”可以用字符串数组替换,但是如果您尝试修改它,TextBox 会忽略 Lines 数组中的任何单个元素。所以我可以将 lines 数组复制到我自己的变量中,用它弄脏它,然后也替换整个东西。
    猜你喜欢
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 2015-09-20
    • 1970-01-01
    相关资源
    最近更新 更多