winfrom 窗体之间传值问题

eastzheng1 2010-10-26 04:44:36
窗体from1 和 from2 都向minFrom 传递相同的一个变量
from1 向mainFrom 传值已经实现
from2 向mainFrom 传值 用同样的方法有冲突

frmV = (from1)this.Owner;
...全文
650 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
elfinman 2010-10-27
  • 打赏
  • 举报
回复
跟程序学在,在Form1.Designer.cs里面public一个变量,这样用Form1.变量名就可以赋值过去啦。
nigerenz 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 skyering 的回复:]
引用 10 楼 xiliangxiliangxilian 的回复:

传递引用吧,直接操作


支持这种方法,我平时也是用这种方法的。在new from1或者form2之后将mainFrom中的某个引用传递给from1或者form2。然后在form1或者form2中直接修改。之后在mainFrom就可以获取传递的值了。
[/Quote]
skyering 2010-10-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xiliangxiliangxilian 的回复:]

传递引用吧,直接操作
[/Quote]

支持这种方法,我平时也是用这种方法的。在new from1或者form2之后将mainFrom中的某个引用传递给from1或者form2。然后在form1或者form2中直接修改。之后在mainFrom就可以获取传递的值了。
lonyjianhui 2010-10-27
  • 打赏
  • 举报
回复
LZ,我觉得最好的方法是用委托,因为这是最安全的,什么定义静态变量和public form,都存在一定的不安全性
李先生2017 2010-10-27
  • 打赏
  • 举报
回复
我觉得你问的这个问题是关于两个窗体间传值的问题,基本有三中方式.
不过你这种情况,最好使用类似session 的方法

首先,在登陆窗体中将用户名和密码保存到一个对象中 userInfo,包括用户名和密码

public class UserInfo
{
public string _userName;
public string _userPassword;
public UserInfo(string userName,string userPassword)
{
_userName=userName;
_userPassword = userPassword;
}
}
UserInfo userInfo = new UserInfo("张三","123456");
AppDomain.CurrentDomain.SetData("UserInfo",userInfo)

然后,在该进程中(单程序域进程),所有窗体或其他类对象中都可以这样获得该对象

UserInfo temp = (UserInfo)AppDomain.CurrentDomain.GetData("UserInfo");
Ki1381 2010-10-27
  • 打赏
  • 举报
回复
全局静态变量、构造函数、public字段都可以
birdmonster 2010-10-27
  • 打赏
  • 举报
回复
传递引用吧,直接操作
herott632482577 2010-10-27
  • 打赏
  • 举报
回复
声明1个PUBLIC变量也可以用委托~~~
哥子谭 2010-10-27
  • 打赏
  • 举报
回复
rmV = (from1)this.Owner;
这句肯定可以的,因为说明了你这两个窗体时一个所属结构,但是换过来就不是了,
而是从属结构了
你定义一个属性来传值吧
qgj1655 2010-10-27
  • 打赏
  • 举报
回复
可以参考一下。
http://topic.csdn.net/u/20101020/22/274a211d-2285-4a8a-b5ee-039f71320736.html
lpt1122 2010-10-26
  • 打赏
  • 举报
回复
我平时用静态变量或者构造函数来传值
wuyq11 2010-10-26
  • 打赏
  • 举报
回复
通过公共静态类进行传值;
通过绑定事件进行传值;
使用Attribute
public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show(this);
}
}

public partial class Form2 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form1 frm1 = (Form1)this.Owner;
((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;
this.Close();
}
}
还可使用委托
wuyq11 2010-10-26
  • 打赏
  • 举报
回复
Private Function ByteArrayToString(ByVal byteArray As Byte()) As String
Dim cod As Encoding = Encoding.UTF8'//
Dim str As String = cod.GetString(byteArray)
Return str
End Function
Jellyfancy 2010-10-26
  • 打赏
  • 举报
回复
这个即使成功了也不安全吧
sweet_ 2010-10-26
  • 打赏
  • 举报
回复
你用静态变量试试,只需将值赋给静态变量就行了,同时变量要是public的

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧