-1

初めて実行したときにうまく機能する検索機能があります。新しい検索を追加しようとすると、プログラムがシャットダウンして次のエラー メッセージが表示されます。戻る;しかし、それは役に立たないようです.誰かがここで何が悪いのか知っていますか?

private void buttonSökNamn_Click(object sender, EventArgs e)
        {

            listBox1.Items.Clear();
            var v = (from x in el.Descendants("recept")
                     where x.Element("namn").Value.ToLower().Contains(textBoxNamn.Text.ToLower())
                     select x);

            if (v == null)
            {
                MessageBox.Show("Finns inte!");
                return;
            }

            foreach (var item in v.Elements("namn"))
            {
                Sökresultat.Add(item.Value);                
            }
            listBoxSökResultat.DataSource = null;
            listBoxSökResultat.DataSource = Sökresultat;

        }

        private void listBoxSökResultat_SelectedIndexChanged(object sender, EventArgs e)
        {
            string markerat;


            markerat = listBoxSökResultat.SelectedItem.ToString().ToLower();
            if (markerat == null) return;
            listBox1.Items.Clear();
            if (listBoxSökResultat.SelectedItems.Count == 0) return;
            var v = (from x in el.Descendants("recept")
                     where x.Element("namn").Value.ToLower() == markerat
                     select x).FirstOrDefault();

            if (v == null)
            {
                MessageBox.Show("Finns inte!");
                return;
            }

            textBoxNamn.Text = v.Element("namn").Value;
            listBox1.Items.Add(v.Element("portioner").Value);

            var test = v.DescendantsAndSelf("ingrediens").ToList();
            foreach (var item in test)
            {
                listBox1.Items.Add(item.Value);
            }

            var test2 = v.DescendantsAndSelf("steg").ToList();
            foreach (var item in test2)
            {
                listBox1.Items.Add(item.Value);
            }

        }
4

1 に答える 1

0

listBoxSökResultat.SelectedItemnullであるため、それ以降 ( ) を呼び出す.ToString()と、その例外が発生します。現在、問題が発生したではなくnull SelectedItemsよりcount高いことを確認しています。それまでには手遅れです。その防御チェックは素晴らしいですが、少し遅すぎます。0

SelectedItemnullその時点で選択されたアイテムがない場合は になるため最初に確認する必要があります。

if (listBoxSökResultat.SelectedItem != null)
{
    markerat = listBoxSökResultat.SelectedItem.ToString().ToLower();
}

これにより、この特定の問題を通過できます。

于 2013-10-16T11:02:02.637 に答える