如何在listBox中的项目之间移动并在标签上显示项目名称.文本



我有一个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>作为ListBoxItemSource,请在listbaox选定的索引更改事件中尝试以下方法

var listTapped = sender as ListBox;
var selectedUser = listTapped.SelectedItem as CustomClass;
if (selectedUser == null)
    return;
label2.Text = selectedUser.Name; //

ListBox包含事件SelectedIndexChanged。它是在这样的条件下提出的。我认为你应该使用它。然后你应该使用SelectedValue属性来获得正确的字符串。

最新更新