C# winfrom datagridview 子父窗口传值问题
现在有这么一个情况:两个窗口分别有一个datagridview,要在父窗体中双击datagridview1一列弹出子窗体,在弹出的子窗体中双击datagridview2的...
现在有这么一个情况:
两个窗口分别有一个datagridview,要在父窗体中双击datagridview1一列弹出子窗体,在弹出的子窗体中双击datagridview2的一列赋值给刚才父窗体中datagridview1所双击的那列....
说昏了,值得到了...就是不知道怎么回传给父窗体!菜鸟求助~~~~ 展开
两个窗口分别有一个datagridview,要在父窗体中双击datagridview1一列弹出子窗体,在弹出的子窗体中双击datagridview2的一列赋值给刚才父窗体中datagridview1所双击的那列....
说昏了,值得到了...就是不知道怎么回传给父窗体!菜鸟求助~~~~ 展开
3个回答
展开全部
1、父窗口传值给子窗口
你可以把父窗口自已传过去,在子窗口方便操作。
Form2 form2= new Form2(this);//实例化一个Form2窗口并把自己传过去
form2.ShowDialog();
在子窗口就可以直接改化变父窗口的值。
另外一种就是用变量在两个窗体之间传值,下面有一个例子,网上找了,希望对你有所帮助。
Form1中代码:
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 lForm = new Form2();//实例化一个Form2窗口
lForm.String1 = "传值给子窗口Form2成功";//设置Form2中string1的值
lForm.SetValue();//设置Form2中Label1的
lForm.ShowDialog();
}
Form2中代码:
private string string1;
public string String1
{
set
{
string1 = value;
}
}
public void SetValue()
{
this.label1.Text = string1;
}
public Form2()
{
InitializeComponent();
}
2、子窗口返回值给父窗口
Form1中代码:
public Form1()
{
InitializeComponent();
}
private string strValue;
public string StrValue
{
set
{
strValue = value;
}
}
private void btnShowForm2_Click(object sender, EventArgs e)
{
Form2 lForm = new Form2();
lForm.Owner = this;//重要的一步,主要是使Form2的Owner指针指向Form1
lForm.ShowDialog();
MessageBox.Show(strValue);//显示返回的值
}
From2中代码:
public Form2()
{
InitializeComponent();
}
private void btnClose_Click(object sender, EventArgs e)
{
Form1 lForm1 = (Form1)this.Owner;//把Form2的父窗口指针赋给lForm1
lForm1.StrValue = "子窗口Form2返回数值成功";//使用父窗口指针赋值
this.Close();
}
你可以把父窗口自已传过去,在子窗口方便操作。
Form2 form2= new Form2(this);//实例化一个Form2窗口并把自己传过去
form2.ShowDialog();
在子窗口就可以直接改化变父窗口的值。
另外一种就是用变量在两个窗体之间传值,下面有一个例子,网上找了,希望对你有所帮助。
Form1中代码:
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 lForm = new Form2();//实例化一个Form2窗口
lForm.String1 = "传值给子窗口Form2成功";//设置Form2中string1的值
lForm.SetValue();//设置Form2中Label1的
lForm.ShowDialog();
}
Form2中代码:
private string string1;
public string String1
{
set
{
string1 = value;
}
}
public void SetValue()
{
this.label1.Text = string1;
}
public Form2()
{
InitializeComponent();
}
2、子窗口返回值给父窗口
Form1中代码:
public Form1()
{
InitializeComponent();
}
private string strValue;
public string StrValue
{
set
{
strValue = value;
}
}
private void btnShowForm2_Click(object sender, EventArgs e)
{
Form2 lForm = new Form2();
lForm.Owner = this;//重要的一步,主要是使Form2的Owner指针指向Form1
lForm.ShowDialog();
MessageBox.Show(strValue);//显示返回的值
}
From2中代码:
public Form2()
{
InitializeComponent();
}
private void btnClose_Click(object sender, EventArgs e)
{
Form1 lForm1 = (Form1)this.Owner;//把Form2的父窗口指针赋给lForm1
lForm1.StrValue = "子窗口Form2返回数值成功";//使用父窗口指针赋值
this.Close();
}
展开全部
子窗体写一个Form的对象或者就写父窗体datagridview的对象,在子窗体写一个带参的构造函数!把父窗体对象传过去。就可以随意找了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
父窗口的datagridview1在第designer.cs里改为public的,子窗口写个构造函数,
class ChildForm : Form{
FatherForm father
public ChildForm(FatherForm father)
:this()
{
this.father = father;
}
public void 传值()
{
father.datagridview1.XXXX = XXXXX;
}
}
class ChildForm : Form{
FatherForm father
public ChildForm(FatherForm father)
:this()
{
this.father = father;
}
public void 传值()
{
father.datagridview1.XXXX = XXXXX;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询