c#中的列表框

时间:2016-08-20 10:49:33

标签: c#

我有一个包含两个列表框的表单,listbox1& listbox2。在表单加载时,我填写了两个相同的列表框。的项目。 我希望如果我在listbox1中的索引1处选择项目,那么在listbox2中也应该选择具有相同索引的项目。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

在两个列表框SelectionChanged上订阅,然后相应地为相反的列表框设置SelectedIndex

答案 1 :(得分:0)

您可以将listBox2中的SelectedIndex绑定到listBox1中的SelectedIndex

像这样:

<ListBox Name="listBox1" />
<ListBox SelectedIndex="Binding ElementName=listBox1,Path=SelectedIndex" />

但是,如果要将listBox2上的选择更改反映回listBox1,则不能在listBox1中执行相同的绑定,因为它会抛出StackOverflowException。您应该在listBox2上订阅SelectionChanged事件并在代码中更改listBox1的SelectedIndex。

像这样:

<ListBox Name="listBox2" SelectedIndex="Binding ElementName=listBox1,Path=SelectedIndex" SelectionChanged="listBox2_SelectionChanged" />

事件处理程序方法如下所示:

private void listBox2_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    listBox1.SelectedIndex = listBox2.SelectedIndex;
}