如何设置listbox ?selecteindex为0只对部分代码有效

本文关键字:0只 有效 代码 selecteindex 何设置 设置 listbox | 更新日期: 2023-09-27 17:49:54

这是代码:

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。一次提取字符串并播放其中的数字,一次将项目添加到列表闪电。

在第一次播放数字时,我希望它是:

this.listBox1.SelectedIndex = 0;

既然我想能够播放已经第一个项目,一旦我点击一个按钮,显示/打开列表框。

在第二个地方,我添加项目到闪电列表,我希望它只会添加项目,如果我点击任何项目第一。既然我做了:

this.listBox1.SelectedIndex = 0;

它将添加项目自动到闪电一旦我显示/打开列表框我需要它被添加到列表中,只有当我点击第一个项目在另一方面,我也想被selecteindex = 0,因为我想要它被选中,所以我可以播放它。

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

如何设置listbox ?selecteindex为0只对部分代码有效

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

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,这样你就可以控制何时应该添加或不添加项。

使用_selectionchangecomcommitted代替listBox1_SelectedIndexChanged