亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在其他類中使用類中的變量

在其他類中使用類中的變量

C#
烙印99 2023-08-20 09:33:38
我創建一個類,定義一些變量及其屬性。我還有兩個類“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 對象已填充,現在當您創建它時,它沒有填充)


查看完整回答
反對 回復 2023-08-20
  • 1 回答
  • 0 關注
  • 143 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號