获取并连接 CheckedBoxComboBox 中的所有选定项

Get and concatenate all the selected item in CheckedBoxComboBox

当我 CheckedBoxComboBox 中的 select 超过 1 个时,我遇到了问题。

我可以使用 CheckListBox 使用此代码来完成此操作。

objNPTBEL.workdayidlist = null;
for (int x = 0; x < checkedListBox1.CheckedItems.Count; x++)
{
     if (x < checkedListBox1.CheckedItems.Count - 1)
         objNPTBEL.workdayidlist += checkedListBox1.GetItemText(checkedListBox1.CheckedItems[x]) + ",";
     else
         objNPTBEL.workdayidlist += checkedListBox1.GetItemText(checkedListBox1.CheckedItems[x]);
}

Ex. Output, "415073,415072"

但是我想要一个ComboBox UI。我找到了这个自定义工具 CheckBoxComboBox.

CheckBox ComboBox Extending the ComboBox Class and Its Items

这是我当前的代码,用于获取 CheckedBoxComboBox 中的所有 selected 项目。

int x = 0;
objNPTBEL.workdayidlist = null;
for (int i = 0; i < checkBoxComboBox1.CheckBoxItems.Count; i++)
{
     if (checkBoxComboBox1.CheckBoxItems[i].CheckState == CheckState.Checked)
     {
         x = x + 1;
         for (int j = 0; j < x; j++)
         {
              if (j < x - 1)
              {
                  objNPTBEL.workdayidlist += checkBoxComboBox1.GetItemText(checkBoxComboBox1.CheckBoxItems[i].Text) + ",";
              }
              else
              {
                  objNPTBEL.workdayidlist += checkBoxComboBox1.GetItemText(checkBoxComboBox1.CheckBoxItems[i].Text);
              }
          }
      }
}

当我 select 超过 1 项时,我的输出如下所示。

ex. Output 415073415072,415072

不要太复杂,只需每次添加逗号,然后trim在最后去掉它..

我不明白为什么有一个内部 for 循环,但我把它留了下来,因为你比我更了解你的项目。它会导致输出中出现重复项,但您并未指出这是一个问题 - 我只是在解决数字 运行 在一起且没有逗号的问题。如果你也不想要重复的项目,你也可以删除内部的 for 循环 - 基本上就像你第一次做的那样,但是用一个 if 来查看项目是否被选中

     for (int j = 0; j < x; j++)
     {
         objNPTBEL.workdayidlist += checkBoxComboBox1.GetItemText(checkBoxComboBox1.CheckBoxItems[i].Text) + ","; 
     }

...

objNPTBEL.workdayidlist = objNPTBEL.workdayidlist.TrimEnd(',');

可能值得指出的是,制作 objNPTBEL.workdayidlist 类似 List<int> 而不是 csv

可能更有用