Очистка старых данных из textBox

170
01 апреля 2019, 20:30

Как реализовать очистку старой информации из "логового" textBox, к примеру с выше 1000 строк или, там, больше 20 000 символов, не теряя свежие данные?

То есть в textBox1 добавляются (textBox1.AppendText(text + "\n");) все комментарии о работе, спустя какое-то время, в нем может быть пару тысяч строк, но при этом важны только данные о последних действиях. Как счищать лишнее?

Answer 1

Linq однострочник (неффективно, зато просто и коротко)

myTextBox.Text = myTextBox.Text
    .Split(new[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
    .Reverse()
    .Take(3) // сколько вам надо с конца строк
    .Reverse()
    .Aggregate(new StringBuilder(), (acc,s)=>acc.AppendLine(s))
    .ToString();
Answer 2

Примерно так:

if (textBox.Lines.Length > 1000)
{
    var index = textBox.Text.IndexOf(Environment.NewLine);
    textBox.Text = textBox.Text.Remove(0, index + Environment.NewLine.Length);
}
textBox.AppendText(text + Environment.NewLine);

Или можно взять ListBox вместо TextBox. С ним код будет выглядеть так:

if (listBox.Items.Count > 1000)
{
    listBox.Items.RemoveAt(0);
}
listBox.Items.Add(text);
READ ALSO
Не могу получить всё, что нужно

Не могу получить всё, что нужно

Я получил все топики, которые относятся к указанному форуму следующим путём:

174
AssetDatabase.GetAssetPath(obj asset) наоборот

AssetDatabase.GetAssetPath(obj asset) наоборот

Так я получу путь до файла, который передам в аргументА как наоборот, получить объект ассета, указав путь до него? Ну как то вроде того

163
ASP NET Core MVC - поместить все div в один ряд

ASP NET Core MVC - поместить все div в один ряд

Создаю ASP NET Core MVC приложение, использую Bootstrap есть три элемента div, нужно вывести все элементы в цикле в один ряд

132
Не отправляется картинка в письме

Не отправляется картинка в письме

Я беру картинку с сервера по прямому пути вот так

115