我有一个listBox1,里面有4个项目。我可以使用这些键在项目之间上下移动,或者在每一个项目上用鼠标单击一次。在这两种情况下,所选项目都将用蓝色标记突出显示。
我希望当我点击一个项目时,或者当我在项目上上下移动键时,它会改变标签。具有当前项目名称的文本。
例如,在"摩西"标签1项中。文本将包含摩西。向上箭头键移动到下一个项目,所以现在标记1。文本包含daniel。用鼠标点击现在标记为1的项目编号3。文本将包含dana。
尝试过这个:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
for (int i = 0; i < listBox1.Items.Count; i++)
{
//listBox1.Items.Add(fsi[i].Name + Environment.NewLine);
label2.Text = listBox1.Items[i].ToString();
}
}
但这并不令人担忧。
适用于我。
private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add("Item1");
listBox1.Items.Add("Item2");
listBox1.Items.Add("Item3");
listBox1.Items.Add("Item4");
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = listBox1.SelectedItem.ToString();
}
你真的希望你的代码能工作吗?如果您只需要检查当前选择的项,为什么要遍历整个集合?
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ListBoxItem lbi = ((sender as ListBox).SelectedItem as ListBoxItem);
label2.Text = lbi.Content.ToString();
}
或者如果你使用的是网络表单:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label2.Text = listBox1.SelectedItem.Text;
}
如果使用List<CustomClass>/ObservableCollection<CustomClass>
作为ListBox
的ItemSource
,请在listbaox选定的索引更改事件中尝试以下方法
var listTapped = sender as ListBox;
var selectedUser = listTapped.SelectedItem as CustomClass;
if (selectedUser == null)
return;
label2.Text = selectedUser.Name; //
ListBox包含事件SelectedIndexChanged
。它是在这样的条件下提出的。我认为你应该使用它。然后你应该使用SelectedValue属性来获得正确的字符串。