现在有winform窗体 sta和stb
   在sta用了一个datagridview控件和一个按钮想通过点击按钮打开stb窗体在stb中修改datagridview中的一行数据
  我想从sta中得到datagridview被选中的那条记录的id传给stb
然后在stb的textbox显示有修改的数据进行修该不知道怎么做
谁有例子给个研究, 谢谢先
  我做的传不了参数:
string starid = this.starmembershow.CurrentRow.Cells[0].ToString();
            member_updata ddrs = new member_updata(starid);
            ddrs.Show();

解决方案 »

  1.   

    多窗体传值
    用委托比较方便http://www.cnblogs.com/Fooo/archive/2007/07/07/809699.html
      

  2.   

    string starid = this.starmembershow.CurrentRow.Cells[0].ToString();
                member_updata ddrs = new member_updata(starid);
                ddrs.Show();
    我得到的starid值是
     DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=4 }
    这个如何查询数据库?
      

  3.   

    this.dataGridView1.SelectedCells[0].Value.ToString().Trim()你是不是用错了
      

  4.   

    把datagridview 的  SelectionMode设置成 FullRowSelect
      

  5.   

    用全局变量,sta,stb分别有一个全局变量id,打开窗体时stb.id=sta.id;
      

  6.   

    这样获取到的是这一行的第一个单元格的值 
    然后根据这个值(必须是唯一的) 查询数据库  再绑定控件  修改就OK了也可以根据 SelectedCells[0] 里面的数字变化传值
      

  7.   

    重载子窗口的构造函数 把 父窗体的this给传过去
    然后把父窗体的datagridview控件设置成public 这样 整个datagridview 在子窗体中都可以 访问了此思路绝对可行 我使用过
      

  8.   

    如果你想很爽的话
    在构造STB的时候就把STA传进来
    这样随便你改了/
      

  9.   

    可以哦
      现在this.dataGridView1.SelectedCells[0].Value.ToString().Trim()
    之后选中那一列就传那一列值
      我选择要固定传被选中着行的第一列呢?
    就是说固定传一个字段的值
      如何写
     谢谢
      

  10.   

    如果是固定字段。可以用
    public GudingZiduan
    {
    get
    set
    }
      

  11.   

    string id = this.starmembershow.SelectedCells[0].Value.ToString().Trim();
                SqlConnection conns = new SqlConnection("user id=sa;password=123;initial catalog=glxtSQL;Server=KEYJOB;Connect TimeOut=500;");
                conns.Open();
                SqlCommand strs = new SqlCommand("delete from TbIPerson where AutoId='" + id + "'", conns);
                strs.ExecuteNonQuery();
    用datagridview显示的数据
    现在想得到这条记录的id
    就是不管鼠标点击的那一列正行都要被选中怎么去设置啊
     我用了上面的代码要是选的其他的列上面的代码就出错
    AutoId='" + id + "'
     这里就查询不到了
    谢谢先
      

  12.   

    搞定
      属性SelectionMode设为FullRowSelect 
    原来这么简单搞了半天
      

  13.   

    传递stb在Load的时候读取Sta的DataSet的当前行datarow.或者stb.Load的时候绑定sta.dataset.datarow[当前行].这样直接就写入dataset了....方便
      

  14.   

    但是有一个问题,上面的方式..如果stb有取消按钮功能的话,不行...可以变更一下
      

  15.   

    starmember窗体 
    private void button4_Click(object sender, EventArgs e)
            {
                string starid = this.starmembershow.SelectedCells[0].Value.ToString().Trim();
                member_updata ddrs = new member_updata(starid);
                if (ddrs.ShowDialog() == DialogResult.OK)
                    this.starmembershow.Refresh();
                else
                    ddrs.Show();
            }
    member_updata窗体
      public member_updata(string starid)
            {
                
               InitializeComponent();
                string memberid = starid;
             }
        .............................        
        strs.ExecuteNonQuery();
                    MessageBox.Show("信息修改成功!", "信息提示");
          this.DialogResult = DialogResult.OK;
                    this.Hide();这样可以刷新窗体但是datagridview显示不数据没刷新帮忙给下谢谢
      

  16.   

    private void starmember_Load(object sender, EventArgs e)
            {
             
                // TODO: 这行代码将数据加载到表“glxtSQLDataSet10.adminvip”中。您可以根据需要移动或移除它。
                this.adminvipTableAdapter.Fill(this.glxtSQLDataSet10.adminvip);
                // TODO: 这行代码将数据加载到表“glxtSQLDataSet9.Comku”中。您可以根据需要移动或移除它。
                this.comkuTableAdapter.Fill(this.glxtSQLDataSet9.Comku);
                // TODO: 这行代码将数据加载到表“glxtSQLDataSet8.StaNews”中。您可以根据需要移动或移除它。
                this.staNewsTableAdapter.Fill(this.glxtSQLDataSet8.StaNews);
                
                // TODO: 这行代码将数据加载到表“glxtSQLDataSet7.TbIPerson”中。您可以根据需要移动或移除它。
                this.tbIPersonTableAdapter1.Fill(this.glxtSQLDataSet7.TbIPerson);
                // TODO: 这行代码将数据加载到表“glxtSQLDataSet6.UpdateNews”中。您可以根据需要移动或移除它。
                this.updateNewsTableAdapter.Fill(this.glxtSQLDataSet6.UpdateNews);
                // TODO: 这行代码将数据加载到表“glxtSQLDataSet1.TbIPerson”中。您可以根据需要移动或移除它。
                this.tbIPersonTableAdapter.Fill(this.glxtSQLDataSet1.TbIPerson);        }        private void 过期会员ToolStripMenuItem_Click(object sender, EventArgs e)
            {        }
            private void button3_Click_1(object sender, EventArgs e)
            {
                member_insert rs = new member_insert();
                rs.Show();
            }        private void button4_Click_1(object sender, EventArgs e)
            {
                string starid = this.starmembershow.SelectedCells[0].Value.ToString().Trim();
                member_updata ddrs = new member_updata(starid);
                if (ddrs.ShowDialog() == DialogResult.OK)
                {
                    SqlConnection cn = new SqlConnection("user id=sa;password=123;initial catalog=glxtSQL;Server=KEYJOB;Connect TimeOut=500;");
                    cn.Open();
                    SqlCommand mmrs = new SqlCommand("select * from TbIPerson");
                    SqlDataReader mnrs = mmrs.ExecuteReader();
                    BindingSource nmrs = new BindingSource();
                    nmrs.DataSource = mnrs;
                    this.starmembershow.DataSource = nmrs;
                    cn.Close();
                }        }我返回重新绑定了但是还是刷新不了啊 !