form1: private void button1_Click(object sender, EventArgs e)
        {
            DallClass1 dc = new DallClass1();
            Form2 f2 = new Form2(dc);
            f2.ShowDialog();
            dcop();    //用于接收cla
        }        private void dcop()
        {
        }
form2:
   
  private void button1_Click(object sender, EventArgs e)
        {
            cla = new List<DallClass1>();            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if ((bool)dataGridView1.Rows[i].Cells[0].EditedFormattedValue == true)
                {
                    DallClass1 dc = new DallClass1();
                    dc._PType = dataGridView1.Rows[i].Cells[2].Value.ToString();
                    dc._PBM = dataGridView1.Rows[i].Cells[3].Value.ToString();                    dc._PName = dataGridView1.Rows[i].Cells[4].Value.ToString();
                    dc._PGType = dataGridView1.Rows[i].Cells[5].Value.ToString();                    dc._PUnits = dataGridView1.Rows[i].Cells[6].Value.ToString();
                    dc._Pprice = dataGridView1.Rows[i].Cells[7].Value.ToString();                    cla.Add(dc);
                }
            }
            this.Close();
        }
    请问 怎么在form1的dcop方法中接收form2返回的cla集合的值。谢谢     

解决方案 »

  1.   


    private void button1_Click(object sender, EventArgs e)
            {
                DallClass1 dc = new DallClass1();
                Form2 f2 = new Form2(dc);
                f2.ShowDialog();
                List<DallClass1> cla = f2.CLA;            dcop(); //用于接收cla
            }        private void dcop()
            {
            }        private List<DallClass1> cla;
            public List<DallClass1> CLA
            {
                get { return cla; }
                set { cla = value; }
            }        private void button1_Click(object sender, EventArgs e)
            {
                cla = new List<DallClass1>();
      ...
      

  2.   

    重载B窗体的构造函数,通过构造函数将A窗体的datagridview传到B窗体中:
    class B
    {
      public B(datagridview dg)
      {
      InitializeComponent();
      B_dg=dg;
      }
    datagridview B_dg;
    }
      private void button1_Click(object sender, EventArgs e)  
    {
      //在这里将你要向datagridview中添加的东西添加进来,然后在A窗体中就有了你新添加的东东了,
      //要是没有的话,你在新写的B窗体的构造函数的参数前加out,就可以了
    }
    代码不是写的很全,我以前也写过一个类似的,只要把控件传递过来向控件中添加就可以了
      

  3.   

    login窗体:
                         
               FormMain formMain = new FormMain(UserId);
                formMain.Login = this;
                 formMain.Show();
                    
    Main窗体:
             
           int userId = 0;//定义接收变量
            public FormMain(int UserId)
            {
                InitializeComponent();
                userId = UserId;
            }
            private FormLogin login;        public FormLogin Login
            {
                get { return login; }
                set { login = value; }
            }
      

  4.   

    Form2 f2 = new Form2(this);
    f2.ShowDialog();
    form1定义List<DallClass1>属性
    赋值到属性

    public partial class Form1 : Form   
      {   
      private void button1_Click(object sender, EventArgs e)   
      {   
      Form2 frm2 = new Form2();   
      frm2.Show(this);   
      }   
      }     public partial class Form2 : Form   
      {   
      private void button1_Click(object sender, EventArgs e)   
      {   
      Form1 frm1 = (Form1)this.Owner;   
      ((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;   
      this.Close();   
      }   
      }   
      

  5.   

    思想:通过Form2类的公有get方法得到cla
    在Form2类中添加属性如下:
             private List<DallClass1> cla;
            public List<DallClass1> CLA
            {
                get { return cla; }
                set { cla = value; }
            }
    在Form1中可以通过如下方式来得到cla:
              Form2 form2=new Form2();
              List<DallClass1> cla=form2.CLA;
      

  6.   


      private List<DallClass1> cla2=new List<DallClass1>();
      private void button1_Click(object sender, EventArgs e)
      {
            DallClass1 dc = new DallClass1();
            Form2 f2 = new Form2(dc);
            f2.ShowDialog();
            dcop(); //用于接收cla
      }  private void dcop()
      {
            Form2 form=new Form2();
            form.Owner=this;
            cla2=(Form1)form;
      }
    form2:
        
      private void button1_Click(object sender, EventArgs e)
      {
            cla = new List<DallClass1>();        for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if ((bool)dataGridView1.Rows[i].Cells[0].EditedFormattedValue == true)
                {
                     DallClass1 dc = new DallClass1();
                     dc._PType = dataGridView1.Rows[i].Cells[2].Value.ToString();
                     dc._PBM = dataGridView1.Rows[i].Cells[3].Value.ToString();                 dc._PName = dataGridView1.Rows[i].Cells[4].Value.ToString();
                     dc._PGType = dataGridView1.Rows[i].Cells[5].Value.ToString();                 dc._PUnits = dataGridView1.Rows[i].Cells[6].Value.ToString();
                     dc._Pprice = dataGridView1.Rows[i].Cells[7].Value.ToString();                 cla.Add(dc);
                     ((form)this.Owner).cla2=cla;    
                }
           }
           this.Close();
      }
      

  7.   

    我觉得你可以把你父窗体上面的显示数据的控件设为公有的,在子窗体中可以生成父窗体的对象,来访问父窗体上的控件,对父窗体上的控件进行操作。
    1.父窗体的Designer.cs文件中(以Lable为例)
      public System.Windows.Forms.Label label1;
    2。在子窗体中生成对象
      父窗体名称 f=new 父窗体名称();
      f.Lable1.Text="你好";