0

这是代码:

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 的两个地方使用了变量 item。一次提取字符串并播放里面的数字,一次将项目添加到 List Lightnings。

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

this.listBox1.SelectedIndex = 0;

因为一旦我单击一个按钮并显示/打开列表框,我就希望能够播放第一个项目。

在我将项目添加到闪电列表的第二个地方,我希望它只有在我首先单击任何项​​目时才会添加该项目。因为我做了:

this.listBox1.SelectedIndex = 0;

一旦我显示/打开listBox,它将自动将项目添加到Lightnings 我需要将其添加到列表中,只有当我首先单击一个项目时,另一方面我也希望被选中index = 0,因为我希望它被选中所以我可以玩。

那么如何区分 SelectedIndex = 0 用于播放和将项目添加到列表中?

4

2 回答 2

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

然后,该标志将保持为真,直到您明确将其更改为假,因此您可以控制何时应添加项目。

于 2012-12-28T15:59:34.610 回答
0

使用 _SelectionChangeCommitted 而不是 listBox1_SelectedIndexChanged

于 2012-12-28T17:27:14.563 回答