我有两个列表框:listBox1,listBox2。
如果我在第一个listBox1中选择项目,则必须在listBox2中自动选择相同索引的项目。 因此,如果我在listbox1中选择项目1,则在listbox2中自动选择项目1,依此类推。
不是:我找到了一些例子,但没有成功。
private void listBoxControl2_SelectedIndexChanged(object sender, EventArgs e)
{ listBoxControl5.SelectedIndex = listBoxControl2.SelectedIndex; }
修改
我使用SelectedValueChanged事件中This answer中选定的索引代码解决了这个问题。
private void listBoxControl2_SelectedValueChanged(object sender, EventArgs e)
{
listBoxControl5.SelectedIndex = listBoxControl2.SelectedIndex;
}
答案 0 :(得分:1)
以下是您可能想要探索的示例,尝试将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
中选择适当的项目。
答案 1 :(得分:0)
要解决您的问题,您可以使用名为Observer的模式:https://msdn.microsoft.com/en-us/library/ee850490(v=vs.110).aspx
基本上,您必须在要通知的列表框中创建通知程序方法。当您在listBox1中选择一个项目时,您将调用listBox2的通知方法。
答案 2 :(得分:0)
我使用SelectedValueChanged事件中This answer中选定的索引代码解决了这个问题。
private void listBoxControl2_SelectedValueChanged(object sender, EventArgs e)
{
listBoxControl5.SelectedIndex = listBoxControl2.SelectedIndex;
}
答案 3 :(得分:0)
最迅速,最简单的方法可以通过MouseDown事件:
private void lstBoxes_MouseDown(object sender, MouseEventArgs e)
{
ListBox lstBox = (ListBox)sender;
lstBx1.SelectedIndex = lstBox.SelectedIndex;
lstBx2.SelectedIndex = lstBox.SelectedIndex;
lstBx3.SelectedIndex = lstBox.SelectedIndex;
}