我创建一个类,定义一些变量及其属性。我还有两个类“Form1”和“Form2”。我在“Form1”中为这些变量赋值,但是当我在赋值后想使用“Form2”中的值并通过 MessageBox.Show() 显示它们时,我发现变量是空的。class Property{ private string a_username; private string a_email; public string username { get { return a_username; } set { a_username = value; } } public string email { get { return a_email; } set { a_email = value; } } public string password { get; set; } = "88306540";}作业:(该函数位于“Form1”中)Property pro = new Property();private void CreateUserInform() { userid = File.ReadLines(filePath).Skip(idx).Take(1).First(); // MessageBox.Show(userid); HtmlElementCollection elemcol = webBrowser2.Document.GetElementsByTagName("option"); int i = 0; string[] mailservices = new string[elemcol.Count]; foreach (HtmlElement elem in elemcol) { mailservices[i] = elem.InnerText; i += 1; } pro.username = userid; Random rand = new Random(); mailservice = mailservices[rand.Next(10)]; pro.email = pro.username + mailservice; wb2func_create_mail(); }调用函数:(该函数位于“Form2”中,在上一个函数之后调用。)Property pro = new Property();public void signup_fill() { HtmlElementCollection elemcol = site.Document.GetElementsByTagName("input"); foreach (HtmlElement elem in elemcol) { if (elem.Name == "login") elem.SetAttribute("value", pro.username); if (elem.Name == "remail") elem.SetAttribute("value", pro.email); if (elem.Name == "password") elem.SetAttribute("value", pro.password); if (elem.Name == "password2") elem.SetAttribute("value", pro.password); } MessageBox.Show(pro.username); }我应该提到的是,“密码”变量显示得很好,但其他变量显示为空。另外,当我在我用来定义它们的“Form1”中调用它们时,它工作得很好并显示了正确的分配。
1 回答
慕森卡
TA贡献1806条经验 获得超8个赞
似乎密码显示得很好,因为它是在 Property 类本身定义的,因此,每次您创建该类的新对象时,都会默认设置它,直到您更改它。
您在 Form 2 中看不到 Form 1 中的数据的原因似乎是您没有将 Property 对象从 Form 1 传递到 Form 2,因此您有一个 Property 对象,其中填充了 Form 1 中的数据,但在 Form 2 中您仍然保留新创建的 Property 对象。只需修改 Form 2 构造函数,使其接受 Property 参数并从 Form 1 传递该参数即可。
示例(这适用于您的 Form2 代码):
public Form2 (Property form1Property){ InitializeComponent(); pro = form1Property; }
这将创建一个代码,每次创建新的 Form2 时都会执行该代码,并要求您传递一个 Property 对象来创建它(new Form2(pro);
在 Form1 中),以便它将 Form2 的 Property 对象分配给您在 Form1 上创建它的对象时传递的对象。
还要将您的 Property 类设为公共,以便您可以将其用作 Form2 构造函数中的参数。
希望这对您有帮助!
PS:查看您的代码,我发现您正在创建一个全局 Form2 对象。您应该在显示它之前在 btn_start_Click 创建它,以便正确填充数据(当您显示它时,您的 Form1 的 Property 对象已填充,现在当您创建它时,它没有填充)
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消