从另一个表单中的CheckedListBox填充Combobox

时间:2017-10-03 16:29:58

标签: c# winforms combobox

我正在Form2使用Form1中的检查项填充一个Combobox,但是我的Combobox中不断填充System.Windows.Forms.CheckedListBox + CheckedItemCollection,请你干预,干杯。

Form1中:

{
    public object checkbox
    {
        get { return this.checkedListBox2.CheckedItems; }
    }

}

在Form2中

{ 
     private Form1 frm1;

     private void Form2_Load(object sender, EventArgs e)
     {
          frm1 = new Form1();
          try
          {
              foreach (object item in frm1.checkbox.ToString())
              {
                 comboBox1.Items.Add(item);
              }
          }
          catch (System.Exception excep)
          {
              MessageBox.Show(excep.Message);    
          }
     }
}

1 个答案:

答案 0 :(得分:1)

您需要更改foreach循环:

try
{
    foreach (object item in frm1.checkbox)
    {
        comboBox1.Items.Add(item);
    }
}
catch (System.Exception excep)
{
    MessageBox.Show(excep.Message);
}

您还必须更改return语句,因为foreach语句不能对'object'类型的变量进行操作,因为'object'不包含'GetEnumerator'的公共定义

public CheckedListBox.CheckedItemCollection checkbox
{
    get { return this.checkedListBox1.CheckedItems; }
}

此外,您需要将Form1传递给另一个表单以获取信息。无论您在何处创建第二个表单,都会通过当前表单

Form2 form2 = new Form2(this);
form2.Show();

然后你的Form2看起来像这样

private Form1 frm1;

public Form2(Form1 frm1)
{
    InitializeComponent();
    this.frm1 = frm1;
    try
    {
        foreach (object item in frm1.checkbox)
        {
            comboBox1.Items.Add(item);
        }
    }
    catch (System.Exception excep)
    {
        MessageBox.Show(excep.Message);
    }
}

您也可以在整个表单的位置传递CheckedItems列表。