Supprimer des Lignes à Partir du Début de la zone de texte Multiligne en C#
Est-il une manière élégante en C# pour supprimer plusieurs lignes de texte à partir du début d'une zone de texte multiligne? Je suis l'aide de Microsoft Visual C# 2008 Express Edition.
ÉDITION - plus de Détails
La zone de texte multiligne dans mon application est désactivée (c'est à dire qu'il n'est modifiable que par l'application elle-même), et chaque ligne est terminée par un "\r\n".
OriginalL'auteur Jim Fell | 2010-01-06
Vous devez vous connecter pour publier un commentaire.
C'est une question incomplète. Donc, en supposant que vous utilisez la zone de texte ou RichTextBox vous pouvez utiliser le Les lignes de biens qui se trouvent inTextBoxBase.
Vous pouvez ensuite travailler avec ce tableau et de le régler.
Cela pourrait ne pas être la façon la plus élégante, mais il va supprimer la première ligne.
EDIT: vous n'avez pas besoin de sélectionner, en utilisant simplement sauter sera bien
Merci, Stan, mais je ne comprends pas la "ligne => la ligne" une partie de votre exemple. J'ai essayé de lignes.Skip(30).Sélectionnez(31, lignes.Count ()), mais il erronées.
vous avez seulement besoin de Sauter(30).Sélectionnez( ligne => la ligne). Sauter les moyens de sauter 30 lignes et Sélectionnez agit généralement d'une transformation, de sorte que dans ce cas il n'y a pas de transformation, nous sommes juste en sélectionnant les lignes restantes après. En fait, l' .Sélectionnez est redondant et nous n'avons même pas besoin. J'ai mis à jour ma réponse.
Lorsque vous travaillez avec une zone de texte qui est rempli par l'application elle-même (les entrées de journal), ce code provoque la position de l'interrupteur du haut vers le bas en permanence. Est-il un moyen de faire la même chose, sans que ce comportement de défilement?
OriginalL'auteur Stan R.
Cette solution fonctionne pour moi en WPF:
Vous pouvez remplacer LogTextBox avec le nom de votre zone de texte, et des Constantes.LogMaximumLines avec le nombre maximum de lignes que vous voulez de votre zone de texte pour avoir.
OriginalL'auteur Vlad Sabev
Malheureusement, non, il n'est pas élégant"," de façon à supprimer les lignes du texte d'une zone de texte multiligne, peu importe si vous êtes en utilisant ASP.NET, WinForms ou WPF/Silverlight. Dans tous les cas, vous construisez une chaîne qui ne contient pas les lignes que vous ne voulez pas et définissez la propriété Text.
WinForms va vous aider un peu en pré-fractionnement de la valeur de Texte en lignes, en utilisant les Lignes de propriété, mais ce n'est pas très utile parce que c'est un tableau de chaîne, et ce n'est pas exactement facile de supprimer un élément d'un tableau.
Généralement, cet algorithme fonctionne pour toutes les versions possibles de la zone de texte de la classe:
Note: je suis en utilisant de l'Environnement.De retour à la ligne spécifiquement pour le cas de Silverlight sur une plate-forme Unix. Pour tous les autres cas, vous êtes parfaitement bien à l'aide de "\r\n" dans la chaîne.Joindre à l'appel.
Aussi, je ne la considère pas comme une solution élégante, même si c'est seulement 3 lignes. Ce qu'il fait est le suivant:
Je ne considère pas cela élégante car elle s'appuie essentiellement sur deux tableaux distincts, puis construit une chaîne de caractères à partir de la deuxième matrice. Une solution plus élégante serait de ne pas le faire.
OriginalL'auteur Randolpho
Une chose à garder à l'esprit est que les Lignes de la collection de la zone de texte ne reflète pas exactement ce que voit l'utilisateur sous forme de lignes. Les Lignes de la collection fonctionne essentiellement hors des retours de chariot, tandis que l'utilisateur peut voir les lignes d'emballage à partir d'une ligne à l'autre sans un retour chariot. Cela peut ou peut ne pas être le comportement que vous souhaitez.
Par exemple, l'utilisateur, voir ci-dessous, que les trois lignes, mais les Lignes collection s'affiche 2 (puisqu'il y a seulement 2 retours chariot):
Aussi, si la forme et le contrôle de texte sont redimensionnables les lignes visibles dans le texte va changer, ainsi que le contrôle augmente ou réduit.
J'ai écrit un billet de blog, il y a plusieurs années sur la façon de déterminer le nombre de lignes dans la zone de texte que l'utilisateur voit et l'index d'une ligne donnée (comme pour obtenir la ligne à l'index: http://ryanfarley.com/blog/archive/2004/04/07/511.aspx, peut-être que ce post aidera.
La zone de texte multiligne dans mon application est désactivée (c'est à dire qu'il n'est modifiable que par l'application elle-même), et chaque ligne est terminée par un "\r\n". (J'ai ajouté ce commentaire à ma question de départ.) Merci pour le heads up.
OriginalL'auteur Ryan Farley
OriginalL'auteur Ash