我在包含列表框的表单中有一个用户控件。我想自动选择列表框中的第一个项目(假设至少有一个项目),但我无法让以下代码工作:
private void Lightnings_Mode_Load(object sender, EventArgs e)
{
this.Size = new Size(416, 506);
this.Location = new Point(23, 258);
listBoxIndexs();
listBoxControl1.MyListBox.SelectedIndex = 0;
if (this.listBoxControl1.MyListBox.Items.Count > 0)
this.listBoxControl1.MyListBox.SelectedIndex = 0;
listBoxControl1.MyListBox.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
this.listBoxControl1.ItemRemoved += new EventHandler<ItemEventArgs>(listBoxControl1_ItemRemoved);
}
这一行:listBoxControl1.MyListBox.SelectedIndex = 0; 将第一个 ListBox 项目标记为蓝色,就像它被选中一样。但这并不是真正选择项目!
所以我试图添加这个:
if (this.listBoxControl1.MyListBox.Items.Count > 0)
this.listBoxControl1.MyListBox.SelectedIndex = 0;
但它也不起作用。
这是 SelectedIndex 事件:
private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
item = listBoxControl1.MyListBox.SelectedItem.ToString();
this.f1.PlayLightnings();
f1.pdftoolsmenu();
int indx = listBoxControl1.MyListBox.SelectedIndex;
if (listBoxControl1.Indices.Contains(indx))
{
if (item != null && !pdf1.Lightnings.Contains(item.ToString()))
{
pdf1.Lightnings.Add(item.ToString());
}
}
}
事件的名称不正确,我必须更改它,因为它是 UserControl 上的 ListBox,但它是正确的。
当我在 SelectedIndex 事件中放置一个断点并单击一个项目时,它会在断点处停止。但是,一旦我使用 UserControl 和 ListBox 显示/打开新表单,我希望它自动转到 selectedIndex 事件。
因此,如果我在 SelectedIndex 事件中放置一个断点,当我单击 Form1 中的按钮以显示/打开新表单时,它将自动停止在断点处,就像我单击第一个项目一样。
这是在 Form1 中显示新表单的代码:
if (toolStripComboBox2.SelectedIndex == -1 && toolStripComboBox1.SelectedIndex == -1)
{
}
else
{
Lightnings_Extractor.Lightnings_Mode lightningsmode1 = new Lightnings_Extractor.Lightnings_Mode(this);
lightningsmode1.Show();
}
除了自动选择第一项外,一切正常。