如何将项目添加到中的所选列表框1其他列表框中的项目2

本文关键字:列表 项目 其他 添加 | 更新日期: 2023-09-27 18:28:55

我想做的是将项目添加到列表框1中,当选择特定项目时,它会在另一个列表框中显示更多信息

这里有一个例子:

Listbox1有个人Bob当Bob被选中时,他的电话号码显示在Listbox2 上

您还可以将电话号码添加到所选项目中。当选择另一个项目时,Bob电话号码消失,并显示下一个选择的名称和电话

因此,在我的案例中,当一个组织被选中时,它会显示该组织中所有工作人员的姓名

这是我所拥有的(不确定它是对是错)

个人.cs

string FirstName;
        string PhoneNumber;
        public Person(string FName, string PNumber)
        {
            FirstName = FName;
            PhoneNumber = PNumber;
        }

组织.cs

string Name;
    public string OrggName
    {
        get 
        {
            return Name;
        }
        set
        {
            Name = value;
        }
    }
    public override string ToString()
    {
        return Name;
    }

按钮点击事件

  private void button1_Click(object sender, EventArgs e)
        {
            NewOrgg = new Organisation();
            NewOrgg.OrggName = textBox1.Text;
            listBox1.Items.Add(NewOrgg);
        }

如何将项目添加到中的所选列表框1其他列表框中的项目2

我认为,如果可能的话,为了更简单,可以这样更改Person类:添加人员所属组织的链接:

    public string FirstName;
    public string PhoneNumber;
    public string OrggName; //Person's Organisation.
    public Person(string FName, string PNumber, string OName)
    { 
        FirstName   = FName;
        PhoneNumber = PNumber; 
        OrggName    = OName;
    }

好的,现在我们有个人和组织课程。在项目的main.cs中,我认为您可以这样做:

    //Define the data providers
    List<Organisation> listofOgg; //List of Organisation or maybe Organisation[];
    List<Person> listofPers; //Again List of related Person or maybe Person[];

现在我们得到了我们的提供商。让我们用一些数据来填充它们。

    public void FillThemAll()
    {
       //Initialize some Lists
        listofOgg = new List<Organisation>();
        listofPers = new List<Person>();
        Organisation o = new Organisation();
        o.OrggName = "Stackoverflow";
        listofOgg.Add(o);
        //Another one
        o.OrggName = "Internet"; // Yes I know, I don't have any Organisation name :-)
        listofOgg.Add(o);
        //Now let's handle some Person
        Person p  = new Person("Tash Nar", "0123456", "StackOverFlow");
        Person p2 = new Person("Lionnel", "0123456", "StackOverFlow");
        Person p3 = new Person("You and Me", "0123456", "Internet");
        //Add them
        listofPers.Add(p);  listofPers.Add(p2); listofPers.Add(p3);
        //Now assuming that we have our two displayed ListBox (listbox1 and listbox2)
        //listbox1 for all organisations and listbox2 for more details about organisations
        //Let's fill listbox1 with our data
        for(int i=0; i < listofOgg.Count; i++)
        {
             listbox1.Items.Add(listofOgg[i].Name);
        }  
    }

现在我们已经做好了90%的准备:D。我们只需要像前面所说的那样处理ListBox(SelectedIndexChanged)中的项目更改事件。

    private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
       string curItem = listBox1.SelectedItem.ToString();
       //clear all items in listbox2 
       listBox2.Items.Clear();
       //Add SelectedItem's related Person in listbox2
       foreach(Person pers in listofPers)
       {
          if(pers.OrggName == curItem)
          {
           //Add this person in listbox2
            listbox2.Items.Add(pers.FName);
          } 
       }
    }

就是这样,我们做到了:D让我知道这是否是你想要的。

您可以使用SelectedIndexChanged事件

private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
   string curItem = listBox1.SelectedItem.ToString();
   //clear and add to listBox2
}