C# WINFORM窗体之间传值丢失 本帖最后由 overset 于 2011-12-15 08:56:08 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关键是你这个SSP.okid = uid ;uid此时到底是什么值? uid的值是这么定义的 public string uid=string.Empty;它是FORM2从FORM1得到的,在给SSP.okid = uid 的时候,uid有值。 这个问题的关键是 你的 form3 SSP = new form3(); SSP.okid = uid ;//此处SSP.okid 也得到值了 SSP.ShowDialog();这个form3与你实际操作是不是同一个对象了?你能确定给赋值okid 与你操作的是同一实体对象的话 就没有问题 public string okid = string.Empty;把这个定义,换成,静态的 public static string okid = string.Empty; 留意下Selectid方法是在窗体加载后执行的,还是在构造函数内执行的 这个之前试过 报错 Member 'okid' cannot be accessed with an instance reference; qualify it with a type name instead 第一点: 在两个类之间传值,在.net里一般不直接使用public的变量。一搬传值都用属性。form3 private string okid = string.Empty; public string Okid { get { return okid; } set { okid = value; } } private void Selectid() { if (okid .Trim() != "")//okid 却一直是空 { MessageBox.Show("OK"); } else { MessageBox.Show("ERR");} }第二点就是:确保你在给okid付完值之后才调用的 Selectid()这个函数。 我是在给okid付完值之后才调用的 Selectid()这个函数 Selectid()这个方法必须放在fromload中去执行,或者窗体显示之后再操作okid;在构造之后你才赋值,所以需窗体显示之后才能获取到值。 重载构造函数form3(string _okid ){this.okid=_okid ;} public string okid = string.Empty;改成public static string okid=string.Empty错误的根本原因是同一个类的对象不同,多看点什么是值类型,什么是引用类型 你执行者一句的时候 调试跟进去 看看这个okid 有么有值 form1的值 传到form2中 可以再加载form2(load)的时候传 而不是再显示窗体的时候传 关于C#中创建数据库 获取有滚动条的ListView控件的内容区域大小 关于如何定制.net framework 如何根据一个数组的长度确定表格的数量,然后动态生成表格呢? 请愚翁帮忙,关于DLL的!谢谢! 为什么我的datagrid中的修改按钮要按两次才变? 在线送分!急求微软duwamish的VISIO设计模型文档!!! 一个发邮件的问题 关于ocx组件在ie里不能正常显示问题。 关于 world wind 的问题 ,重谢! 一个关于bitmap流叠加到World wind上的问题 WinForm里的控件加载到WPF中后无法修改颜色.....
uid此时到底是什么值?
form3 SSP = new form3();
SSP.okid = uid ;//此处SSP.okid 也得到值了
SSP.ShowDialog();
这个form3与你实际操作是不是同一个对象了?你能确定给赋值okid 与你操作的是同一实体对象的话 就没有问题
public static string okid = string.Empty;
在两个类之间传值,在.net里一般不直接使用public的变量。一搬传值都用属性。form3 private string okid = string.Empty;
public string Okid
{
get
{
return okid;
}
set
{
okid = value;
}
} private void Selectid()
{ if (okid .Trim() != "")//okid 却一直是空
{
MessageBox.Show("OK");
}
else { MessageBox.Show("ERR");}
}
第二点就是:确保你在给okid付完值之后才调用的 Selectid()这个函数。
form3(string _okid )
{
this.okid=_okid ;
}