我正在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);
}
}
}
答案 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
列表。