如何使列表框中的第一个项目自动被选中?
本文关键字:项目 第一个 何使 列表 | 更新日期: 2023-09-27 17:51:26
我有一个UserControl在一个表单,其中包含一个列表框。我想自动选择列表框中的第一个项目(假设至少有一个项目),但我无法获得以下代码的工作:
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。selecteindex = 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事件中放置一个断点并单击一个项目时,它在断点处停止。但是我希望它去selectedIndex事件自动一旦我显示/打开新的表单与UserControl和ListBox。
如果我在SelectedIndex事件中设置了一个断点,当我点击Form1中的按钮来显示/打开新表单时,它会自动在断点处停止,就像我点击第一项一样。
这是Form1中显示新表单的代码:
if (toolStripComboBox2.SelectedIndex == -1 && toolStripComboBox1.SelectedIndex == -1)
{
}
else
{
Lightnings_Extractor.Lightnings_Mode lightningsmode1 = new Lightnings_Extractor.Lightnings_Mode(this);
lightningsmode1.Show();
}
一切正常,除了自动选择第一项。
您可能需要交换开始侦听事件的位置和实际广播事件的位置。
尝试改变:
if (this.listBoxControl1.MyListBox.Items.Count > 0)
this.listBoxControl1.MyListBox.SelectedIndex = 0;
listBoxControl1.MyListBox.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
:
listBoxControl1.MyListBox.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
if (this.listBoxControl1.MyListBox.Items.Count > 0)
this.listBoxControl1.MyListBox.SelectedIndex = 0;
通常我订阅eventhandler在我的OnLoad部分的表单,并调整任何设置在我的OnShow部分,以帮助避免这种事情。
你必须改变项目本身的属性:
listBoxControl1.Focus();
listBoxControl1.Items[0].Selected = true;
第一行的并不是真正必要的,但是我将包含它以防止一些问题。您还应该处理IndexOutOfRangeException
,以防列表框中没有项目。
http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.setselected(v=vs.90).aspx
不是if (this.listBoxControl1.MyListBox.Items.Count > 0)
this.listBoxControl1.MyListBox.SelectedIndex = 0;
试试这个:
if (this.listBoxControl1.MyListBox.Items.Count > 0)
this.listBoxControl1.MyListBox.SetSelected(0,true);
您可以简单地尝试:使用0索引。
listBoxControl1.Items[0].Selected = true;