如何设置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播放和添加项目到列表?
如果我理解正确的话,您可以简单地添加一个标志。
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