1

フォームを閉じると、cmbProspecten_SelectedIndexChangedメソッドが呼び出されます。しかし、cmbProspecten の値は null であるため、

NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

この問題を解決する方法について何か考えはありますか? 次の行にエラー メッセージが表示されます。"if(setInMail(Convert.ToInt32(dr[0]), Convert.ToInt32(cmbProspecten.SelectedValue.ToString())) == true)

    private void cmbProspecten_SelectedIndexChanged(object sender, EventArgs e)
    {
        lstOntvangen.Items.Clear();

        OleDbConnection con = new OleDbConnection(connstring);
        string query = "SELECT Ontwikkeldossier.OntwikkeldossierID, [E-mailcampagne].CampagneID FROM [E-mailcampagne], Ontwikkeldossier WHERE (([Ontwikkeldossier].[Startdatum]>=[E-mailcampagne].[StartdatumOpl] And [Ontwikkeldossier].[Startdatum]<=[E-mailcampagne].[EinddatumOpl])) ORDER BY [E-mailcampagne].Naam";

        OleDbCommand cmd = new OleDbCommand(query, con);
        con.Open();
        OleDbDataAdapter da = new OleDbDataAdapter();
        da.SelectCommand = cmd;
        DataSet ds = new DataSet();
        DataTable dt = new DataTable();
        da.Fill(ds);
        dt = ds.Tables[0];
        con.Close();
        int i = 0;
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            EmailMarketingDataset._E_mailcampagneRow emailrow = emailMarketingDataSet._E_mailcampagne.FindByCampagneID(Convert.ToInt32(dr[1]));
            EmailMarketingDataset.OntwikkeldossierRow ontwikkelrow = emailMarketingDataSet.Ontwikkeldossier.FindByOntwikkeldossierID(Convert.ToInt32(dr[0]));
            if (i != 0)
            {
                if (lstOntvangen.Items[i - 1].ToString() == emailrow.Naam)
                {
                    if(setInMail(Convert.ToInt32(dr[0]),Convert.ToInt32(cmbProspecten.SelectedValue.ToString())) == true)
                        lstOntvangen.Items.Add(ontwikkelrow.Titel);
                }
                else
                {
                    if (setInMail(Convert.ToInt32(dr[0]), Convert.ToInt32(cmbProspecten.SelectedValue.ToString())) == true)
                    {
                        lstOntvangen.Items.Add(" ");
                        lstOntvangen.Items.Add(emailrow.Naam);
                        lstOntvangen.Items.Add(ontwikkelrow.Titel);
                    }
                    i = lstOntvangen.Items.Count - 1;
                }
            }
            else
            {
                if (setInMail(Convert.ToInt32(dr[0]), Convert.ToInt32((cmbProspecten.SelectedValue.ToString())) == true)
                {
                    lstOntvangen.Items.Add(emailrow.Naam);
                    lstOntvangen.Items.Add(ontwikkelrow.Titel);
                    i++;
                }
            }
        }
    }
4

2 に答える 2

2

form_onclosing イベントで追加cmbProspecten.SelectedIndex = -1

そして、このようにselectedindexchangedイベントを追加します..

private void cmbProspecten_SelectedIndexChanged(object sender, EventArgs e)
{

    if cmbProspecten.selectedindex=-1 {return ;}
    lstOntvangen.Items.Clear();
于 2013-05-22T09:07:46.963 に答える