如何对 ListBox 进行分组(Windows 表单)

How to group ListBox (Windows Forms)

我正在尝试对列表框 1 中的名称进行分组。 listbox1 中的每个项目都用逗号分隔。我想将这些项目附加到同一行中的前一个项目。此外,名称(列表框 1)应在每行中仅在列表框 2 中显示一次。结果应如下所示 (lb2)。如何实现?感谢您的帮助!

´´´

listBox1.Items.Add(item.S1 + " , " + item.S2);

´´´

enter image description here

为您制作了一个快应用。可能不是最有效的,但可以完成工作。还添加了排序以使其更容易

 private void button1_Click(object sender, EventArgs e)
 {
     listBox2.Items.Clear();

     ArrayList namelist = new ArrayList();
     foreach (object o in listBox1.Items)
     {
         namelist.Add(o);
     }

     namelist.Sort();
     string newItem = "";
     for (int i = 0; i < namelist.Count; i++)
     {
         string item = namelist[i].ToString();

         string firstName = item.Substring(0, item.IndexOf(','));
         string initials = item.Substring(item.IndexOf(',')+1);
         initials = initials.Trim();

         //newItem +=  initials;

         if (i + 1 < namelist.Count)
         {
             string nextItem = namelist[i+1].ToString();
             string nextFirstName = nextItem.Substring(0, nextItem.IndexOf(','));
             string nextInitials = nextItem.Substring(nextItem.IndexOf(',') + 1);

             if(firstName.ToLower() == nextFirstName.ToLower())
             {
                 newItem += ", " + initials;
             }
             else
             {
                 newItem = firstName + newItem + ", " + initials;
                 listBox2.Items.Add(newItem);
                 newItem = "";
             }
         }
         else
         {
             newItem = firstName + newItem + ", " + initials;
             listBox2.Items.Add(newItem);
             newItem = "";
         }
     }
 }

Results of code