Windows形成奇怪的函数调用跳转

时间:2012-07-08 00:48:57

标签: c# .net winforms visual-studio-2010

我正在制作一个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事件处理程序的代码就在我调用第二种形式的代码块之后。

这可能是个错误吗? 请帮忙!

1 个答案:

答案 0 :(得分:0)

毕竟这是一个例外。我刚刚添加了

Collection=new ArrayList();
在LoadCollection()方法中