C#.net中如何在一个Form中访问另一个Form的变量以及控件 15
我有一个主Form另外有建了一个子Form用来做对话框它在我单击按钮时ShowDialog出来但是我想在子Form中访问主form中的控件获得主Form中的变量值应该怎么...
我有一个主Form 另外有建了一个子Form 用来做对话框 它在我单击按钮时ShowDialog出来 但是我想在子Form中访问主form中的控件 获得主Form中的变量值 应该怎么办
展开
9个回答
展开全部
你可以设置子窗体的Owner属性为父窗体,举个例子
父窗体f1,子窗体f2,父窗体里定义一个label1可见性为Public
f1中
Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();
f2中
Form1 f1;
f1 = (Form1)this.Owner;//这句不要写在构造方法里(会出错)最好写在Form2的Load方法里
f2的button1_Click事件中
f1.label1.Text = "xxx";
父窗体f1,子窗体f2,父窗体里定义一个label1可见性为Public
f1中
Form2 f2 = new Form2();
f2.Owner = this;
f2.Show();
f2中
Form1 f1;
f1 = (Form1)this.Owner;//这句不要写在构造方法里(会出错)最好写在Form2的Load方法里
f2的button1_Click事件中
f1.label1.Text = "xxx";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将主form当做构造函数的参数传到子form中,子form中可以有一个m_ParentForm之类的变量,接收这个参数。然后把需要的操作搞成Public的,把需要改变的控件和变量用public属性抛出,这样,对m_parentform的操作等于对主form的操作。如form2是form1的子窗体,有
class form2:form
{
form1 m_form1;
public form2(form1 f1)
{
m_form1 = f1;
}
……
}
或直接将需要操作的控件作为参数传进去,以免去抛出属性。
class form2:form
{
form1 m_form1;
public form2(form1 f1)
{
m_form1 = f1;
}
……
}
或直接将需要操作的控件作为参数传进去,以免去抛出属性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以在创建子窗体对象那赋值给子窗体中的变量
子窗体那声明的变量要加public,如 public int i;
在父窗体那单击按钮事件中:
子Form 子=new 子Form();
子.i=this.父窗体中的变量;
子.ShowDialog();
子窗体那声明的变量要加public,如 public int i;
在父窗体那单击按钮事件中:
子Form 子=new 子Form();
子.i=this.父窗体中的变量;
子.ShowDialog();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
通过静态变量
特点:传值是双向的,实现简单
实现代码如下:
在一个app类中定义一个静态成员value
public class app
{
public static string value;
}
在窗体Form1中这样调用
app.value = "f2"; //给静态成员赋值
new Form2 ( ).Show ( ); //显示Form2
在窗体Form2中
this.Text = app.value; //取回app.value的值
app.value = "Form2"; //给app.value赋值,以便其他窗体调用
参考地址:
http://hi.baidu.com/xiaocai06/blog/item/ddcf18832ae4e0a50df4d233.html
特点:传值是双向的,实现简单
实现代码如下:
在一个app类中定义一个静态成员value
public class app
{
public static string value;
}
在窗体Form1中这样调用
app.value = "f2"; //给静态成员赋值
new Form2 ( ).Show ( ); //显示Form2
在窗体Form2中
this.Text = app.value; //取回app.value的值
app.value = "Form2"; //给app.value赋值,以便其他窗体调用
参考地址:
http://hi.baidu.com/xiaocai06/blog/item/ddcf18832ae4e0a50df4d233.html
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
也可以用构造函数,
子窗体里面建一个带参数的构造函数,
主窗体new子窗体的时候传过去。
新窗体添加有参数的构造函数,假如新窗体是Form2:
public Form2(int num)
{
InitializeComponent();
Label1.text = num; //Form2的的标签获取传过来的变量值
}
在主窗体调用新窗体的时候:
Form2 f2=new Form2(int 变量名) //通过构造函数传过去
f2.show();
this.hide();
子窗体里面建一个带参数的构造函数,
主窗体new子窗体的时候传过去。
新窗体添加有参数的构造函数,假如新窗体是Form2:
public Form2(int num)
{
InitializeComponent();
Label1.text = num; //Form2的的标签获取传过来的变量值
}
在主窗体调用新窗体的时候:
Form2 f2=new Form2(int 变量名) //通过构造函数传过去
f2.show();
this.hide();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询