如何将listBox1.SelectedIndex设置为0只对部分代码产生影响?

时间:2012-12-28 15:33:41

标签: c# winforms

这是代码:

private void Lightnings_Mode_Load(object sender, EventArgs e)
        {
            this.Size = new Size(416, 506);
            this.Location = new Point(23, 258);
            listBoxIndexs();
            this.listBox1.SelectedIndex = 0; // This will make the listBox when showing it first time first item to be already selected !!!!!!
        }

        private void listBoxIndexs()
        {
            for (int i = 0; i < Form1.lightningsRegions.Count; i++)
            {

                    listBox1.Items.Add(Form1.lightningsRegions[i]);

            }
        }

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

我在Form1中的两个地方使用变量项。 一次提取字符串并在里面播放数字,一次将项目添加到List Lightnings。

第一次播放我想要的数字:

this.listBox1.SelectedIndex = 0;

因为我希望能够在点击按钮并显示/打开listBox后已经播放了第一个项目。

在第二个地方,我将项目添加到闪电列表我想要它只会在我首先点击任何项目时添加项目。 自从我做到了:

this.listBox1.SelectedIndex = 0;

一旦我显​​示/打开listBox,它将自动添加项目到Lightnings 我需要将它添加到列表中,如果我在另一方面单击第一个项目我也想被选择索引= 0因为我希望它被选中所以我可以播放它。

那么如何在SelectedIndex = 0之间分开播放和将项目添加到列表中呢?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你可以简单地添加一个标志。

bool allowItemAdding;

private void Lightnings_Mode_Load(object sender, EventArgs e)
{
    allowItemAdding = false; //setting false here because *sometimes* Load event is called multiple times.

    this.Size = new Size(416, 506);
    this.Location = new Point(23, 258);
    listBoxIndexs();
    this.listBox1.SelectedIndex = 0;  
    allowItemAdding = true; //set flag to true after selecting the index initially
}

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{          
     item = listBox1.SelectedItem.ToString();
     this.f1.PlayLightnings();
     f1.pdftoolsmenu();
     if (allowItemAdding)
     {
         if (item != null && !pdf1.Lightnings.Contains(item.ToString()))
         {
             pdf1.Lightnings.Add(item.ToString());             
         }
     }
}

该标志将保持为真,直到您明确将其更改为false,这样您就可以控制何时添加项目。

答案 1 :(得分:0)

使用_SelectionChangeCommitted代替listBox1_SelectedIndexChanged