创建一个项目, 有两个窗体:Form1 , Form2
在Form1上有一个dataGridView1想实现点击Form1上的按钮,将Form2显示出来,并将Form1上的dataGridView1的值显示在Form2中
点完按钮后,Form2中出现了dataGridView,但是Form1上的dataGridView却不见了,这是怎么回事
Form1的按钮事件:        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form = new Form2();            form.view = dataGridView1;
            form.Show();
        }
[code]Form2的代码
[code=C#]
         //在Form2中定义一个类变量View
         public DataGridView view = new DataGridView();
        public Form2()
        {
            InitializeComponent();
        }        private void Form2_Shown(object sender, EventArgs e)
        {
            this.Controls.Add(view);
        }

解决方案 »

  1.   

    DataGridView是不是数据绑定的,试试传数据源,不要直接传DataGridView
      

  2.   

    private void button1_Click(object sender, EventArgs e)
            {
                Form2 form = new Form2();            form.view = dataGridView1;
                form.Show();
            }
    你这部分代码进行的是引用赋值,这样的后果就是使得form2中的变量view 也指向了form1中的dataGridView1,
    所以你在form2中操作的效果就会影响到form1的效果了!
    可以对form.view = dataGridView1;进行修改
    比如form.view = dataGridView1.clone();方法等
      

  3.   

    dataGridView能不能做克隆呀
      

  4.   

    查了一下,dataGridView好像 没有这个clone方法
      

  5.   

    呵呵,没错,我只是举个例子,需要实现icloneble的接口才会有!
      

  6.   

    比如说你要将你的 dataGridView1中的数据,位置,大小等信息一个个拷贝到form.view中(深拷贝),而不是简单的直接等于
      

  7.   

    我现在又把dataGridView转为DataTable了,再传Form2的dataGridView,正在写,不知道是否可行
      

  8.   

    ...不要传递控件``而是传递dataGridView中的数据~~把数据源传递到FORM2中``用FORM2中的dataGridView绑定传过来的数据源
      

  9.   

     private void button1_Click(object sender, EventArgs e)
            {
                Form2 form = new Form2();            form.view.DataSource = dataTable1;
                form.Show();
            }