完整的代码我写不出来,我是属于用软件才能写的。。没软件记不住那么多。
不过应该很简单。举例说一下吧:
Form1:
在这个窗体下建一个公共的变量 public int id;
这个变量用来保存你的ID;
当你双击按钮的时候Form3会Show出来对吧。
然后会把数据加载进Form3的datagridview中。
给datagridview添加一个双击事件。
当事件触发的时时候:
if(datagridview1.selectedrows !=null ) //判断你是否有选中的数据。
{
//然后把Form1 new一下
Form1 frm = new Form1();
frm.id = int.parse(datagridview1.selectedrows[0].cells[0].value.tostring()); //datagridview中的结构是你建的,你肯定知道哪个列存的是什么吧。这里假设是第一列。这句语句的意思就是把你选中行的第一个单元格的内容转成ID,赋值给Form1下的id变量。
然后窗口关闭的时候。。。。哎呀。。对了。你也许不知道。。这种窗体用模式窗体打开会好点。
就是ShowDialog这种方法。。因为有返回值。好判断,不用你再建变量,或是传参数了。等后面我写一段给你看,接着说。
窗口关闭的时候让Form1的textbox.Text =id.tostring();不就可以了么?
}
//模式窗体,比如用Form1的按钮打开Form3
if(Form3.ShowDialog() == DialogResault.Yes)
{
//这里添加的内容就是当窗口关闭,并且返回值为yes的时候。你可以把textbox1.Text=id.tostring();放到这里
}
//当然,你还要在Form3的关闭按钮或事件中添加让返回值为yes的语句。比如
按钮事件
{
this.close();
dialogresault =dialogresault.Yes; //就这么简单。按了这个按钮就关闭窗口,并将YES返回。
}
同理。Form2。只要跟在Form1后面new一下.把Form2下的公用变量赋值就好。。
我一般都是这么作的。。如果你想用我的方法,还有什么不明白的就追问吧。
Form1:
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
if (f.ShowDialog() == DialogResult.OK)
{
this.textBox1.Text = f.ReturnID + f.ReturnContent;
}
}
Form2:
public string ReturnID { get; set; }
public string ReturnContent { get; set; }
private void Form2_Load(object sender, EventArgs e)
{
dataGridView1.Rows.Add(new object[] { 1, "A1"});
dataGridView1.Rows.Add(new object[] { 2, "A2" });
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
this.ReturnID = dataGridView1.Rows[e.RowIndex].Cells[this.ID.Index].Value.ToString();
this.ReturnContent = dataGridView1.Rows[e.RowIndex].Cells[this.Content.Index].Value.ToString();
this.DialogResult = DialogResult.OK;
}
Form3同Form1
form1中
from2 f2=new from2(this)
f2.show();
from2 中
重写构造函数
private form1 f;
public form2(form1 f)
{
this.f=f;
init()//窗体生成器函数考进来
}
form2 的CellDoubleClick事件
this.f.TextBox1.Text=dr.Cells["DlsName"].Value.ToString();
TextBox1 public
可以了