我正在制作一个 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
beaks 和程序跳转到未定义的地方。(我之前提到过绘制事件引发,但我从代码中删除了它,它不再引发。当我调试时,程序只是继续运行,加载事件处理程序未完成。有趣的是Paint 事件处理程序的代码就在我调用第二种形式的代码块之后)。
这可能是一个错误吗?请帮忙!