Andy Dansby Ответов: 1

Как добавить разделенные запятыми элементы в поле richtext к нескольким элементам listview в C#


Работа над простым проектом на языке C#. У меня есть несколько пунктов (в данном случае 5 пунктов), которые все разделены запятыми. В конце строки есть возврат и новая строка (/r/n).

В каждом из элементов, разделенных запятыми, я хочу иметь ячейку в listview, и когда я вижу возврат и новую строку, я хочу перейти к следующей записи представления списка.

То, что я получаю, - это весь текст в первой ячейке и повторяется для каждой последующей ячейки.

Что я уже пробовал:

private void button2_Click(object sender, EventArgs e)
{
    if (richTextBox2.Lines.Length == 0)
    {
        MessageBox.Show("Load some data First");
        return;
    }

    String richtextstring = String.Empty;

     foreach (string str in richTextBox2.Lines)
     {
         richtextstring = str;

         //try to see if this will discover a comma in the string
        if(richtextstring == ",")
         {
             MessageBox.Show("Comma");
         }
         //try to see if this will discover a hard return
         if(richtextstring == ""\r\n"")
         {
            MessageBox.Show("New Line");
         }

         listView1.Items.Add(richTextBox2.Text);
     }
}

1 Ответов

Рейтинг:
6

Thomas Daniels

То, что вы сейчас делаете, - это проверка, равна ли полная строка одной единственной запятой (richtextstring == ",") или \r\n что не поможет, если вы хотите получить элементы, разделенные запятыми. Кроме того, линия .Lines никогда не будет равен "\r\n" потому что это рассматривается как разделитель строк (а не как часть самой строки), так что .Lines исключу его.

Похоже, вас интересуют две вещи: строки RichTextBox и элементы, разделенные запятыми. Для первого случая вы можете использовать .Lines (как вы это сделали), и для последнего вы можете использовать .Split(',').

Не совсем ясно, когда вы хотите создать новый элемент в ListView, но если я правильно понимаю, вы хотите создать новый элемент для каждого элемента, разделенного запятыми, и повторить это для каждой строки. Вы можете сделать это вот так:

if (richTextBox2.Lines.Length == 0)
{
    MessageBox.Show("Load some data first");
    return;
}

foreach (string line in richTextBox2.Lines)
{
    string[] commaSeparatedItems = line.Split(',');
    foreach (string item in commaSeparatedItems)
    {
        listView1.Items.Add(item);
        
        // if you want to do something else for each single item, do it here
    }

    // if you want to do something else for each line (after all comma-separated items have been added), do it here
}
Если вышесказанное не то, что вы намеревались, то вы, вероятно, можете преобразовать его в то, что вы действительно хотите сделать.