Desafortunadamente, no, no hay una forma "elegante" de eliminar líneas del texto de un TextBox de varias líneas, independientemente de si está utilizando ASP.NET, WinForms o WPF/Silverlight. En todos los casos, construyes una cadena que no contiene las líneas que no deseas y configuras la propiedad de Texto.
WinForms lo ayudará un poco dividiendo previamente el valor de Texto en líneas, usando la propiedad Líneas, pero no es muy útil porque es una matriz de cadenas y no es exactamente fácil eliminar un elemento de una matriz.
Por lo general, este algoritmo funciona para todas las versiones posibles de la clase 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());
Nota: Estoy usando Environment.NewLine específicamente para el caso de Silverlight en una plataforma Unix. Para todos los demás casos, está perfectamente bien usar "\ r \ n" en la cadena. Hacer llamada.
Además, no considero que esta sea una solución elegante, a pesar de que solo son 3 líneas. Lo que hace es la siguiente:
- divide la cadena única en una matriz de cadenas
- itera sobre esa matriz y construye una segunda matriz que no incluyen las líneas omiten
- se une a la matriz de nuevo en una cuerda simple
No lo considero elegante porque esencialmente construye dos matrices separadas, luego construye una cadena de la segunda matriz. Una solución más elegante no haría esto.
NOTA: TextBox de WPF no contiene una propiedad Lines. Esto solo funcionará para WinForms. – Randolpho
Gracias, Stan, pero no entiendo la parte "line => line" de su ejemplo. Intenté líneas. Skip (30) .Seleccione (31, lines.Count()) pero tenía errores. –
@Jim solo necesita saltar (30) .Seleccionar (línea => línea). Omitir significa omitir 30 líneas y Select suele ser una transformación, por lo que en este caso no hay transformación, solo estamos seleccionando las líneas restantes después. De hecho, .Select es redundante y ni siquiera lo necesitamos. Actualicé mi respuesta. –