如何在listBox中的项目之间移动并在label.Text上显示项目名称?

时间:2012-08-25 08:27:15

标签: c# listbox

我有一个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();
            }
        }

但它没有措辞。

4 个答案:

答案 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属性来获得正确的字符串。