C# 在panel中打开一个新form,并且传递回textbox的值
小弟初学C#,目前需要在form1的panel1里通过点击按钮,打开一个新的form2(可在这里假想为填写注册信息的框),有3个textbox,并且要从panel1里传递...
小弟初学C#, 目前需要在form1的panel1里通过点击按钮,打开一个新的form2(可在这里假想为填写注册信息的框),有3个textbox, 并且要从panel1里传递2个值给form2,然后再从form2的3个textbox中传回3个值给form1. 在网上找了一些介绍,但是说的都很空洞没有实例,希望大家能帮帮忙给个例子~
展开
5个回答
展开全部
假如有两个窗体 fom1 和form2在form1里某按钮单击打开form2,且form2里有个textBox1控件并要为该控件赋值则可以
Form2 f2 = new Form2();
f2.Show();
((TextBox)(f2.Controls.Find("textBox1",true)[0])).Text = "value";
实现了从form1操作form2里的控件
如果实现传回的话就复杂些需要重构form2的构造函数和新建一个form1对象
新加个
public Form1 pform;
public Form2(Form1 frm)
{
pform = frm;
InitializeComponent();
}
在form1中修改为
Form2 f2 = new Form2(this);
f2.Show();
在fomr2中
直接使用pform就可以操作form1对象了,传递值更没问题
Form2 f2 = new Form2();
f2.Show();
((TextBox)(f2.Controls.Find("textBox1",true)[0])).Text = "value";
实现了从form1操作form2里的控件
如果实现传回的话就复杂些需要重构form2的构造函数和新建一个form1对象
新加个
public Form1 pform;
public Form2(Form1 frm)
{
pform = frm;
InitializeComponent();
}
在form1中修改为
Form2 f2 = new Form2(this);
f2.Show();
在fomr2中
直接使用pform就可以操作form1对象了,传递值更没问题
追问
谢谢~很详细,不过这只是我问题里的一部分...LX说的设全局变量是个好方法吗?另外我想打开form2后form1变得不可操作,需要改什么属性呢?
追答
我修改了答案 可以设置公共变量通过我修改的那部分 调用并传递form1的公共变量
如果不可用的话
this.Enabled = false;就行了
展开全部
1.panel1里值传给form2
在form2中设公有(publice)的全局变量
在form1中按钮事件里,实例化form2后,可以给form2的相关全局变量赋值,这样就把panel1里的值传递给form2了
或者form2弄个带2参数的构造函数,这样的话,在实例化(new)的时候就能把值传递给form2了,然后可以把这2参数值保存到全局变量,用到的时候再调用全局变量
2.form2回传给form1
form2加3个(publice)全局变量,把textbox值赋给这3个变量
如果是点击确定,关闭form2时回传,其他情况不回传
form1里代码 from2 frm = new form2();
if(frm.ShowDialog() ==System.Windows.Forms.DialogResult.OK)
{
//这里通过访问frm的3个全局变量来得到form2中text的值
}
from2里可以使用this.DialogResult = System.Windows.Forms.DialogResult.OK来关闭窗体
另一种委托,不关闭form2,某个操作,也能回传值
在form2中设公有(publice)的全局变量
在form1中按钮事件里,实例化form2后,可以给form2的相关全局变量赋值,这样就把panel1里的值传递给form2了
或者form2弄个带2参数的构造函数,这样的话,在实例化(new)的时候就能把值传递给form2了,然后可以把这2参数值保存到全局变量,用到的时候再调用全局变量
2.form2回传给form1
form2加3个(publice)全局变量,把textbox值赋给这3个变量
如果是点击确定,关闭form2时回传,其他情况不回传
form1里代码 from2 frm = new form2();
if(frm.ShowDialog() ==System.Windows.Forms.DialogResult.OK)
{
//这里通过访问frm的3个全局变量来得到form2中text的值
}
from2里可以使用this.DialogResult = System.Windows.Forms.DialogResult.OK来关闭窗体
另一种委托,不关闭form2,某个操作,也能回传值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以选中解决方案-->右键-->添加类,在里面增加俩个静态变量,然后在跳转到form2之前把form1中的变量值存到类中,然后在调用。也可以用委托实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义全局变量也可以
用委托也可以
用委托也可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设全局变量就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询