0

我有这个列表框的事件代码:

I tried ot do it this way and it's almost working good.


private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
        {




            if (recentItems.Contains(listBox1.SelectedItem))
            {
                itemExist = true;
                item = listBox1.SelectedItem.ToString();
                this.f1.PlayLightnings();
                f1.pdftoolsmenu();
            }
            else
            {
                itemExist = false;
                item = listBox1.SelectedItem.ToString();
                recentItems.Add(listBox1.SelectedItem.ToString());
                this.f1.PlayLightnings();
                f1.pdftoolsmenu();
            }


        } 

我正在使用一个新的布尔变量 itemExist 并检查 List recentItems 是否不包含 selectedItem 添加它。

如果它确实存在,则将该标志设置为 true。

然后在 Form1 的其他代码中,我正在做:

if (Lightnings_Extractor.Lightnings_Mode.itemExist == true)
                {
                    if (!pdf1.Lightnings.Contains(Lightnings_Extractor.Lightnings_Mode.item))
                    {
                        pdf1.Lightnings.Add(Lightnings_Extractor.Lightnings_Mode.item);
                    }
                } 

所以它可以按我的意愿工作,但问题是我在 listBox 中选择的每个新项目都单击它我必须单击它两次,因为第一次它不在recentItems 中,只有在第二次单击它在recentItems 中才会这样做,而且只有在第二次单击时,它将标志更改为 true。

那么如何在 SelectedIndexChanged 事件中解决这个问题呢?

4

1 回答 1

0

我现在看到我不需要 Form1 中的代码部分,只需要以下代码:

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            item = listBox1.SelectedItem.ToString();
            this.f1.PlayLightnings();
            f1.pdftoolsmenu();
            if (item != null && !pdf1.Lightnings.Contains(item.ToString()))
            {
                pdf1.Lightnings.Add(item.ToString());             
            }
        }
于 2012-12-28T00:42:43.060 回答