我有两个列表框: listBox1,listBox2。
如果在第一个listBox1中选择项,则必须在listBox2中自动选择相同索引的项。因此,如果我在listbox1中选择项目1,那么在listbox2中自动选择项目1等等。
不是:我找到了一些例子,但没有用。
private void listBoxControl2_SelectedIndexChanged(object sender, EventArgs e)
{ listBoxControl5.SelectedIndex = listBoxControl2.SelectedIndex; }编辑:
我在This answer事件中使用SelectedValueChanged事件中选择的索引代码解决了这个问题。
private void listBoxControl2_SelectedValueChanged(object sender, EventArgs e)
{
listBoxControl5.SelectedIndex = listBoxControl2.SelectedIndex;
}发布于 2015-08-08 00:26:09
下面是您可能想进一步探索的示例,尝试将ListBox添加到您的表单中(在本示例3个列表框中),它应该如下所示:

下面是一个源,每当您单击上面的某个项目时,都会选择相同的索引:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitializeListBoxes();
}
private void InitializeListBoxes()
{
//Populate listboxes
listBox1.Items.Add("Apple");
listBox1.Items.Add("Orange");
listBox1.Items.Add("Mango");
listBox2.Items.Add("Milk");
listBox2.Items.Add("Cheese");
listBox2.Items.Add("Butter");
listBox3.Items.Add("Coffee");
listBox3.Items.Add("Cream");
listBox3.Items.Add("Sugar");
//Subscribe to same events
listBox1.SelectedIndexChanged += listBox_SelectedIndexChanged;
listBox2.SelectedIndexChanged += listBox_SelectedIndexChanged;
listBox3.SelectedIndexChanged += listBox_SelectedIndexChanged;
}
void listBox_SelectedIndexChanged(object sender, EventArgs e)
{
ListBox listBox = (ListBox)sender;
listBox1.SelectedIndex = listBox.SelectedIndex;
listBox2.SelectedIndex = listBox.SelectedIndex;
listBox3.SelectedIndex = listBox.SelectedIndex;
}
}所发生的事情是在您订阅同一个事件的InitializeListBoxes上触发SelectedIndexChanged事件,并从每个ListBox中选择适当的项。
发布于 2015-08-07 23:58:27
要解决问题,可以使用一个名为观察者的模式:https://msdn.microsoft.com/en-us/library/ee850490(v=vs.110).aspx
基本上,您必须在要通知的列表框中创建一个通知程序方法。在listBox1中选择项时,将调用listBox2的通知程序方法。
发布于 2015-08-08 00:24:40
我在This answer事件中使用SelectedValueChanged事件中选择的索引代码解决了这个问题。
private void listBoxControl2_SelectedValueChanged(object sender, EventArgs e)
{
listBoxControl5.SelectedIndex = listBoxControl2.SelectedIndex;
}https://stackoverflow.com/questions/31888142
复制相似问题