2015-12-09 5 views
0

У меня этот код, но он имеет ошибки, что мне делать?заменить строку в richtextbox vb.net

  Dim lines As New List(Of String) 
    lines = RichTextBox1.Lines.ToList 
    'Dim FilterText = "@" 

    For i As Integer = lines.Count - 1 To 0 Step -1 
     'If (lines(i).Contains(FilterText)) Then 
     RichTextBox1.Lines(i) = RichTextBox1.Lines(i).Replace("@", "@sometext") 
     'End If 
    Next 

    RichTextBox1.Lines = lines.ToArray 
+0

показать ошибку и то, что вы пытаетесь достичь ??? –

+0

RichTextBox1.Lines (i) .Replace = "@sometext" –

ответ

2

Update: в то время как следующее «работает» она только изменяет массив, который был возвращен из Lines -свойства. Если вы измените этот массив, вы не измените текст TextBox. Поэтому вам нужно повторно назначить весь массив на Lines -property, если вы хотите изменить текст (как показано ниже). Поэтому я сохраняю первую часть своего ответа только потому, что исправляет синтаксис, а не реальную проблему.


Это не

RichTextBox1.Lines(i).Replace = "@sometext" 

но

RichTextBox1.Lines(i) = "@sometext" 

Вы можете мертвую Lines вперед, обратный цикл не нужен здесь.


Может быть, вы хотите заменить все "@" с "@sometext" вместо:

RichTextBox1.Lines(i) = RichTextBox1.Lines(i).Replace("@","@sometext") 

Так вот полный код необходимо (так как он по-прежнему, как представляется, проблема):

Dim newLines As New List(Of String) 
For i As Integer = 0 To RichTextBox1.Lines.Length - 1 
    newLines.Add(RichTextBox1.Lines(i).Replace("@", "@sometext")) 
Next 
RichTextBox1.Lines = newLines.ToArray() 

Но возможно, вы могли бы использовать:

RichTextBox1.Text = RichTextBox1.Text.Replace("@","@sometext")` 

потому что, если у нас есть @ abcd, этот код измените его на @ sometextabcd! Я Хочу код, чтобы заменить, например, строку 1 полностью @ SOMETEXT

Просьба представить всю релевантную информации в первой очереди в следующий раз:

Dim newLines As New List(Of String) 
For Each line As String In RichTextBox1.Lines 
    Dim newLine = If(line.Contains("@"), "@sometext", line) 
    newLines.Add(newLine) 
Next 
RichTextBox1.Lines = newLines.ToArray() 
+0

Я пытаюсь заменить строку: если строка (x) содержит = @ Замените ее на @SomeText :( –

+0

Для каждого i в RichTextBox1.Lines RichTextBox1.Lines (i) = RichTextBox1.Lines (i) .Replace ("@", "@sometext") Next Whats Wrong?! –

+0

@MrArman: почему вы теперь используете другой код? Это неправильно, потому что тогда вы не целые цепочки, а строки (каждая строка), поэтому 'i' - это строка, а не число, поэтому вы не можете использовать ее в' RichTextBox1.Lines (i) '. У вас уже есть строка. Но это не сработает. строка, когда вы используете 'For Every'. Ваш первый aproach был правильным, но вы могли бы переходить вперед:' For i As Integer = O To lines1.Count - 1 ... ' –

Смежные вопросы