我有一个listBox1里面有4个项目。我可以使用按键在项目之间上下移动,或者在每种情况下用鼠标单击一次,所选项目将以蓝色标记突出显示。
我希望当我点击某个项目或当我在项目上下移动键时,它会更改带有当前项目名称的label.Text。
例如在项目moses上,label1.Text将包含moses。 用箭头键向上移动到下一个项目,现在label1.Text包含daniel。 单击项目编号3上的鼠标,现在label1.Text将包含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();
}
}
但它没有措辞。
答案 0 :(得分:1)
您真的希望您的代码有效吗?如果您只需要检查当前选择的项目,为什么要遍历整个集合呢?
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ListBoxItem lbi = ((sender as ListBox).SelectedItem as ListBoxItem);
label2.Text = lbi.Content.ToString();
}
或者如果你正在使用webforms:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label2.Text = listBox1.SelectedItem.Text;
}
答案 1 :(得分:1)
适合我。
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();
}
答案 2 :(得分:1)
如果您使用List<CustomClass>/ObservableCollection<CustomClass>
ItemSource
作为ListBox
,请在listbaox选择的索引更改事件中尝试以下方式
var listTapped = sender as ListBox;
var selectedUser = listTapped.SelectedItem as CustomClass;
if (selectedUser == null)
return;
label2.Text = selectedUser.Name; //
答案 3 :(得分:0)
ListBox包含事件SelectedIndexChanged
。它提出了这样的条件。我想你应该用它。然后你应该使用SelectedValue属性来获得正确的字符串。