1

内部に4つのアイテムがあるlistBox1があります。キーを使用してアイテム間を上下に移動したり、各アイテムをマウスで 1 回クリックしたりできます。どちらの場合も、選択したアイテムは青色の でハイライト表示されます。

アイテムをクリックしたり、アイテムの上でキーを上下に動かしたりすると、ラベルが変更されます。現在のアイテム名のテキスト。

たとえば、アイテム 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();
}

または、Webフォームを使用している場合:

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を使用している場合は、listbaox selected index changed イベントで次の方法ItemSourceを試してくださいListBox

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 に答える