C# 从列表框中选择对象,并在另一个列表框中显示相应的对象

C# 从列表框中选择对象,并在另一个列表框中显示相应的对象,c#,winforms,listbox,C#,Winforms,Listbox,我有一个Form1,我在其中创建Medic对象并将它们添加到listaMedici1。在Form2中,我创建了Pacient对象,将它们添加到listapacienti2,并将该列表发送到Form1 在Form1中,我有两个列表框:在listbox1_medici中,我显示Medic对象的列表。 我想做的是,当我从listbox1_medici中选择一个Medic对象时,在listbox2_pacienti中,显示所有Pacient对象,其字段codM与所选对象字段codM相同。我试过这种方法,

我有一个Form1,我在其中创建Medic对象并将它们添加到listaMedici1。在Form2中,我创建了Pacient对象,将它们添加到listapacienti2,并将该列表发送到Form1

在Form1中,我有两个列表框:在listbox1_medici中,我显示Medic对象的列表。 我想做的是,当我从listbox1_medici中选择一个Medic对象时,在listbox2_pacienti中,显示所有Pacient对象,其字段codM与所选对象字段codM相同。我试过这种方法,但不起作用。有什么不对劲吗?多谢各位

表格1: 按钮3用于用Medic对象填充listbox1_medici

SelectieItem和event SelectedIndexChanged方法应该显示与listbox1\u medici中选择的Medic对象具有相同codM的Pacient对象,但它们不起作用

public partial class Form1 : Form
    {
        public List<Medic> listaMedici1 = new List<Medic>();
        public List<Pacient> listaPacienti1 = new List<Pacient>();
        public ArrayList specialitati = new ArrayList();

        public Form1()
    {
        InitializeComponent();

        specialitati.Add("Endocrinologie");
        specialitati.Add("Oftalmologie");
        specialitati.Add("Neurologie");
        specialitati.Add("Cardiologie");
        for (int i = 0; i < specialitati.Count; i++)
            comboBox1spec.Items.Add(specialitati[i]);

        Medic m1 = new Medic(1, "Ionescu", "Endocrinologie");
        Medic m2 = new Medic(2, "Popescu", "Cardiologie");
        listaMedici1.Add(m1);
        listaMedici1.Add(m2);



    }


    private void button1_Click(object sender, EventArgs e)
    {//this is where i create objects using the textboxes
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form2 form = new Form2(listaMedici1);
      //  form.listaMedici2 = listaMedici1;
        form.ShowDialog();
        this.Close();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        foreach (Medic m in listaMedici1)
        {
            if(!(listBox1_medici.Items.Contains(m)))
            {
                listBox1_medici.Items.Add(m.ToString());
            }
        }
    }

    private void SelectieItem(object sender, EventArgs e)
    {
        if(listBox1_medici.SelectedItems.Count==1)
        {
            Medic med = listBox1_medici.SelectedItem as Medic;
            for(int i=0;i<listaPacienti1.Count;i++)
            {
                if(med.CodM==listaPacienti1[i].CodM)
                {
                    listBox2_pacienti.Items.Add(listaPacienti1[i].ToString());
                }
            }
        }
    }

    private void listBox2_pacienti_SelectedIndexChanged(object sender, EventArgs e)
    {
        SelectieItem(sender, e);
    }
}
公共部分类表单1:表单
{
public List listaMedici1=新列表();
public List listaPacienti1=新列表();
public ArrayList specialitati=new ArrayList();
公共表格1()
{
初始化组件();
特别补充(“内分泌学”);
特别条款添加(“金融学”);
特别补充(“神经病学”);
特别条款添加(“心脏病”);
for(int i=0;i对于(int i=0;这是代码的分配,你能把问题缩小到代码的一个子集吗?@Kami,完成了,我给一些方法添加了注释,只让可能对解决问题有用的主要方法使用数据绑定。首先-你说你在使用
列表框
,但在代码中我可以看到
组合框
,那么你在使用什么呢。S第二,你能展示一下你的
Medic
Pacient
课程吗?
public partial class Form2 : Form
{
    public List<Medic> listaMedici2 = new List<Medic>();
    public List<Pacient> listaPacienti2 = new List<Pacient>();
    Form1 form1;

    public Form2()
    {
        InitializeComponent();

        Pacient p1 = new Pacient(1, "Danut", 2, 230);
        Pacient p2 = new Pacient(2, "Cristi", 1, 120);
        listaPacienti2.Add(p1);
        listaPacienti2.Add(p2);
    }

    public Form2(List<Medic> listaMedici1)
    {
        InitializeComponent();
        listaMedici2 = listaMedici1;
        foreach (Medic med in listaMedici2)
        {
            comboBox1codmed.Items.Add(med.CodM.ToString());
        }
    }


    private void button1_Click(object sender, EventArgs e)
    {//this is where i create Pacient objects using the textboxes
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form1 frm = new Form1();
        frm.listaPacienti1 = listaPacienti2;
        frm.ShowDialog();
        this.Close();
    }
}