C#中窗口间的相互访问 请教一个问题!如何在一个窗口中访问另一个窗口的成员变量啊? 例如:在Form1 中 new 了一个Form2我想在Form2中来访问Form1中的成员变量A该如何写代码啊??最关键的是如何获取Form1的实例. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 或者把参数定义到class里用form1和form2都用this调用 设置form2的owner为form1,然后在form2中 form1 frm = (form1)this.owner这样就可以引有用了. 在你的Form2的构造函数中加入一个System.Windows.Forms.Form类型的参数调用Form2的时候,把Form1作为参数传进来另外,把Form1中你想访问的成员变量设置为public的,或者建立一个属性进行访问 这种问题问的人挺多的嘛!简单的方法就是设置成public或者添加一个属性private string vvv;public string v{get{return vvv}set{vvv=value}}然后在窗体中对v进行设值,然后在你要用的窗体中访问vvv就可以了 首先先感激一下大家的踊跃解答有不少的朋友都提出使用Public 类型的公共变量,但是我想强调一下这个问题的重点Form2 是由 Form1 生成的!也就是说!如果直接定义一个Public 类型的公共变量 P_AClass Form1 { Public string Ps_A}如果是在Form2 中直接生成Form1 ,要访问Ps_A是相当容易的事情!直接在Form2中Class Form2{ string ls_form1_A; Form1 form1 = new Form1(); ls_form1_A = form1.Ps_A; }就可以了!但是我现在遇到的问题是Form1先生成,Form2是在Form1中生成的!Class Form1{ Form2 form2 = new Form2(); ........}并且在程序的运行中Ps_A是在根据不同的条件在变的!这样一来就不能直接在Form2中用 Form1 form1 = new Form1(); ls_form1_A = form1.Ps_A; 来访问了! 感谢 zhgroup(机器不会错,错的是人!) 的解答,在这里我自己来补充一下:如果是在两个无关的窗体间要实现上述的访问可以使用Form的Owenr属性在Form1中添加:Form2 form2 = new Form2();this.AddOwnedForm(form2);在Form2中添加:Form1 form1 = (Form1)this.Owner; //直接将已经存在的Form1与form1关联起来之后就可以适时的访问Form1中的Public变量了如果是在MDI窗体间要实现上述的访问可以使用Form的ParentForm属性在Form1中添加:Form2 form2 = new Form2();form2.MdiParent = this;在Form2中添加:Form1 form1 = (Form1)this.ParentForm; //直接将已经存在的Form1(MDI主窗口)与form1关联起来之后就可以适时的访问Form1中的Public变量了 DesignSurface 如何实现快捷键 有牛人吗?求个算法! winform程序线程的问题,界面老卡 winform邮箱登陆验证,读取数据流出错,求高人指点 关于xml 的问题 新手提问:关于窗体 高手帮忙看看这个sql语句怎么写!急在线等.谢谢@ 吐血推荐,精彩FLASH片。 VB.NET C#.NET VC.NET J#.NET 哪个应用更广泛一点? 如何在.net里通过一个Windows应用程序实现Oracle数据库的导入导出,导出类型为Accuess或者文本文件?请知道的人详细讲解,多谢!!!!! 窗口打开问题(在线等!) 如何去掉路径前面的"@"字符,谢谢了!
用form1和form2都用this调用
或者添加一个属性
private string vvv;
public string v
{
get{return vvv}
set{vvv=value}
}
然后在窗体中对v进行设值,然后在你要用的窗体中访问vvv就可以了
有不少的朋友都提出使用Public 类型的公共变量,但是我想强调一下这个问题的重点Form2 是由 Form1 生成的!也就是说!如果直接定义一个Public 类型的公共变量 P_AClass Form1
{
Public string Ps_A
}如果是在Form2 中直接生成Form1 ,要访问Ps_A是相当容易的事情!
直接在Form2中
Class Form2
{
string ls_form1_A; Form1 form1 = new Form1();
ls_form1_A = form1.Ps_A;
}就可以了!
但是我现在遇到的问题是Form1先生成,Form2是在Form1中生成的!
Class Form1
{
Form2 form2 = new Form2();
........
}
并且在程序的运行中Ps_A是在根据不同的条件在变的!
这样一来就不能直接在Form2中用
Form1 form1 = new Form1();
ls_form1_A = form1.Ps_A;
来访问了!
zhgroup(机器不会错,错的是人!)
的解答,在这里我自己来补充一下:
如果是在两个无关的窗体间要实现上述的访问可以使用Form的Owenr属性
在Form1中添加:
Form2 form2 = new Form2();
this.AddOwnedForm(form2);在Form2中添加:
Form1 form1 = (Form1)this.Owner; //直接将已经存在的Form1与form1关联起来
之后就可以适时的访问Form1中的Public变量了如果是在MDI窗体间要实现上述的访问可以使用Form的ParentForm属性
在Form1中添加:
Form2 form2 = new Form2();
form2.MdiParent = this;在Form2中添加:
Form1 form1 = (Form1)this.ParentForm; //直接将已经存在的Form1(MDI主窗口)与form1关联起来
之后就可以适时的访问Form1中的Public变量了