К сожалению, нет, не существует "элегантного" способа удаления строк из текста многострочного TextBox, независимо от того, используете ли вы ASP.NET, WinForms или WPF / Silverlight. В каждом случае вы создаете строку, не содержащую ненужных строк, и устанавливаете свойство Text.
WinForms немного поможет вам, предварительно разделив значение Text на строки, используя свойство Lines, но это не очень полезно, потому что это строковый массив, а удалить элемент массива не совсем просто.
Как правило, этот алгоритм будет работать для всех возможных версий класса TextBox:
var lines = (from item in myTextBox.Text.Split('\n') select item.Trim());
lines = lines.Skip(numLinesToSkip);
myTextBox.Text = string.Join(Environment.Newline, lines.ToArray());
Примечание. Я использую Environment.Newline специально для Silverlight на платформе Unix. Во всех остальных случаях вы вполне можете использовать "\ r \ n" в вызове string.Join.
Также я не считаю это изящным решением, хотя это всего 3 строчки. Он делает следующее:
- разбивает одну строку на массив строк
- выполняет итерацию по этому массиву и строит второй массив, который не включает пропущенные строки
- объединяет массив обратно в одну строку.
Я не считаю это элегантным, потому что он по сути строит два отдельных массива, а затем строит строку из второго массива. Более элегантное решение этого не сделает.
person
Randolpho
schedule
06.01.2010