日期:2014-05-18  浏览次数:20581 次

winform窗体间传值有哪几种方法?哪种方法相对更好一些??
如题!~
在网上找了一下,有什么方法,属性,还有构造函数里改,等等
请做过c/s程序的高手解答一下,谢谢

------解决方案--------------------

复杂的数据类型用对象作为介质.

简单的一些数据可以直接调用窗体的方法来传递.
------解决方案--------------------
以下代码示例在LoginForm窗体中(登录成功后,显示主窗体前,将登录用户名传递给主窗体):

MainForm frm = new MainForm(userName) // 主窗体重载了一个带参数的构造函数
frm.Show();

MainForm frm = new MainForm()
frm.SetUser(userName);
frm.Show(); // 主窗体定义一个public的方法SetUser.


MainForm frm = new MainForm()
frm.UserName = userName; // 主窗体定义一个public的属性UserName.
frm.Show();
------解决方案--------------------

如果用户属性很多,可以给定义一个 "用户 "类.

登录窗体将初始化后的用户(用户类实例),传递给主窗体. // 复杂数据类型传递.
------解决方案--------------------
个人习惯构造函数传窗体的引用
------解决方案--------------------
http://topic.csdn.net/t/20041027/19/3497195.html
------解决方案--------------------
1 构造参数/委托传值.

通常这是最常见的方式,FORM2里面写个属性,然后把FORM1的对象赋给这个属性.然后在FROM2里面很自在的使用FORM1对象.从而得到FORM1里面设置的所有东东.

FORM2里面定义委托和事件,在FORM1里面绑定此事件的处理程序.然后在FORM2里面触发此事件,既可把数据顺利通过参数传给FORM1.


2 静态类

这个貌似是最简单的方法,创建一个静态类,把公用的东东都放在此类的静态属性中,使用者取之既可

3 应用程序进程( AppDomain)


FORM1:
AppDomain.CurrentDomain.SetData( "XXX ", XXXX);

FROM2:
AppDomain.CurrentDomain.GetData( "XXX ");

------解决方案--------------------
帮顶!
------解决方案--------------------
属性,委托,构造方法重载
接口都可以
------解决方案--------------------
不会,UUPP
------解决方案--------------------
楼上谦虚了
我经常看见你回些不错的帖子
你太谦虚了
------解决方案--------------------
学习,接分