1

我有一个 listBox1 里面有 4 个项目。我可以使用按键在项目之间上下移动,或者在每个项目上用鼠标单击一次,在这两种情况下,选定的项目都将以蓝色标记突出显示。

我希望当我单击一个项目或当我在项目上上下移动键时,它会更改 label.Text 与当前项目名称。

例如在项目 moses 中,因此 label1.Text 将包含 moses。使用向上箭头键移动到下一个项目,因此现在 label1.Text 包含丹尼尔。用鼠标点击项目编号 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

4 回答 4

1

您真的希望您的代码能够正常工作吗?如果您只需要检查当前选定的项目,为什么要遍历整个集合?

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;
}
于 2012-08-25T08:32:58.347 回答
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();   
}
于 2012-08-25T08:35:28.940 回答
1

如果您使用List<CustomClass>/ObservableCollection<CustomClass>as ItemSourceforListBox在 listbaox selected index changed 事件中尝试以下方式

var listTapped = sender as ListBox;

var selectedUser = listTapped.SelectedItem as CustomClass;
if (selectedUser == null)
    return;
label2.Text = selectedUser.Name; //
于 2012-08-25T08:37:05.477 回答
0

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

于 2012-08-25T08:31:00.650 回答