我創建一個類,定義一些變量及其屬性。我還有兩個類“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 關注
- 143 瀏覽
添加回答
舉報
0/150
提交
取消