如何检测列表框中的项目是否已被选中一次?

时间:2012-12-26 09:09:38

标签: c# winforms

我有listBox的这个事件代码:

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();
            }


        } 

我使用新的bool变量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事件中解决这个问题呢?

1 个答案:

答案 0 :(得分: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());             
            }
        }