我正在制作一个Windows表单应用程序,它涉及C#中的几种形式 我使用ShowDialog()调用第二个表单。
然后我尝试使用自定义对象填充组合框(在第二个表单上)。自定义类有一个将DataTable转换为ArrayList的方法。但是,每当我尝试将项添加到ArrayList时,都会引发SplitPanel绘制事件的事件处理程序。此外,该面板放在主表格上。
以下是代码:
这是我显示第二种形式的地方:
frmInsertSurovina insertSurovina = new frmInsertSurovina(0);
insertSurovina.ShowDialog();
这是我填充组合框的地方:
private void frmInsertSurovina_Load(object sender, EventArgs e)
{
if (mode == 0) button1.Text = "Внеси";
else button1.Text = "Зачувај";
DB data=new DB();
DataTable devizi = data.GetDevizi();
DeviziCollection collDevizi = new DeviziCollection();
collDevizi.LoadCollection(devizi);
cmbDeviza.DataSource = collDevizi.Collection;
cmbDeviza.DisplayMember = "Text";
cmbDeviza.ValueMember = "Value";
//some other code here
}
这是自定义类:
public class DeviziCollection
{
public ArrayList Collection { get; set; }
public DeviziCollection()
{
}
public void LoadCollection(DataTable table)
{
foreach (DataRow row in table.Rows)
{
Deviza item = new Deviza();
item.Text = row["Naziv"].ToString();
item.Value = row["ID"].ToString();
Collection.Add(item);
}
}
}
现在,在最后一行Collection.Add(Item);
执行frmInsertSurovina_Load
喙,程序跳转到某处未定义。 (我之前提到过一个paint事件引发了,但是我从代码中删除它并且它不再引发。当我调试时,程序只是继续运行,Load事件处理程序未完成。有趣的是, Paint事件处理程序的代码就在我调用第二种形式的代码块之后。
这可能是个错误吗? 请帮忙!
答案 0 :(得分:0)
毕竟这是一个例外。我刚刚添加了
Collection=new ArrayList();
在LoadCollection()方法中。