我想在当前窗口form1的dgv上单击右键修改,然后打开另外一个窗口form2,form2窗口显示数据,在form2中修改后点击保存,不要在数据库中重新生成一条新记录,而是要修改原来的行,具体代码该怎么写呢?谢谢大家啦!~~

解决方案 »

  1.   

    dgv.CurrentRow.Cells["列名"].Value.ToString() 是获取你选中的哪行数据的那一列的值,你可以对应获取你想要的数据,然后传入form2;可以将你需要的列的值获取并一并传过去,也可以获取期中一列然后在form2加载的时候重新查找一遍,看个人选择
      

  2.   

    首先先谢谢你!关键是form1怎么给form2传数据呢?这个我不太懂,帮帮啦!
      

  3.   

    这个建议用contextMenuStrip做菜单.
      

  4.   

    这就很多了,可以通过参数形式传过去,可以设置全局静态,可以设置public等等等等,你网上百度一大把
      

  5.   

    在dlgChild(你的子窗口)中定义好属性
    public string XXX { get { return textBox1.Text; } }
    ...if (dlgChild.ShowDialog() == DialogResult.OK)
    {
        string newValue = dlgChild.XXX;
        //下面就是更新这个值了
    }
      

  6.   


    var ar = dataGridView1.CurrentRow.DataBoundItem;当前行的数据,如果是DataTable的数据源,可以把ar转化为dataRow
    如果数据源是List<T>,则转化为相应的对象T.
      

  7.   

    在form1中获取dgv.CurrentRow.Cells["主键"].Value.ToString() 的值,然后把这个值传给form2,form2根据这个值读数据库把各字段内容填充到窗口相应的textbox中,然后我要修改form2,点保存的时候需要更新数据!更新数据应该是用的updata吧?现在关键是怎么才能把form1中获取的主键的值传给form2???
      

  8.   

    dgv.CurrentRow.Cells["主键"].Value.ToString() string strID;
    //构造函数 
     form2(string 主键)
    {
         strID=主键;
    }form1代码
    {
        form2 f2=new form2(dgv.CurrentRow.Cells["主键"].Value.ToString() );
        f2.show();
    }form2中的strID就是Form1传递过来的主键,直接用.
      

  9.   

    你应该先设置form2中显示信息的控件的Modifiers为public
    比如form2中的label1显示信息,你先到form2中把label1属性中的Modifiers改为public
    然后让form2.label1.Text="需要的信息";
    再form2.Show();
    这就传过去了。