0

C#でいくつかのフォームを含むWindowsフォームアプリケーションを作成しています。
ShowDialog()を使用して、メインフォームから2番目のフォームを呼び出します。

次に、(2番目のフォームの)コンボボックスにカスタムオブジェクトを入力しようとします。カスタムクラスには、DataTableをArrayListに変換するメソッドがあります。ただし、ArrayListに項目を追加しようとすると、SplitPanelペイントイベントのイベントハンドラーが発生します。さらに、そのパネルはメインフォームに配置されます。

コードは次のとおりです。

これは、2番目のフォームを表示する場所です。

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とプログラムは未定義のどこかにジャンプします。(ペイントイベントが発生することは前に述べましたが、コードから削除したため、発生しなくなりました。デバッグ中は、プログラムはLoadイベントハンドラーが未完成のまま機能し続けます。興味深いのは、 Paintイベントハンドラーのコードは、2番目のフォームを呼び出しているコードブロックの直後にありました)。

これはバグでしょうか?助けてください!

4

1 に答える 1

0

結局、それは例外でした。追加しました

Collection=new ArrayList();

LoadCollection()メソッドで。

于 2012-07-08T01:18:39.880 に答える