2011-04-08 92 views
0

我正在使用C#語言並嘗試使用OOP。多種形式和屬性

我想做一個註冊頁面。在註冊窗口窗體上,我將所有在文本框中輸入的值(名字,姓氏,用戶名等)發送到用戶類。

User user = new User(); user.FirstName = txtFirstName.Text;

這就是所有屬性的設置方式。

一切正常,但提交後,我打開一個新的表單開具發票和付款。所以我關閉了註冊表單並打開了付款表格。在付款表單中,當我試圖訪問我在User類中存儲的值時,我不能。對於字符串,所有屬性都重置爲null,對於雙精度值則爲0.00。

我試圖不關閉註冊表單來查看是否有效,但它仍然重置屬性。所以我認爲這與在支付類中創建新對象有關。

如何將註冊表單中的屬性存儲到用戶類中,然後從付款表單中訪問這些屬性?

這可能嗎?

回答

0

你幾乎寫這樣的一些代碼:

public static class UserData 
{ 
    public static string FirstName; 
    public static bool Register(string firstName) 
    { 
     bool success = false; 
     //probably db related code here 
     if (success) 
     { 
      FirstName = firstName; 
      return true; 
     } 
     return false; 

    } 
} 

從現在起,你可以UserData.FirstName 訪問用戶的屬性我認爲會有1個用戶。如果我誤解了你的問題,並且會有超過1個用戶,你應該採取不同的方法,可能在某個地方持有對List有用的靜態引用(即使在UserData實例類中是靜態字段),並添加最後保存的UserData實例到完成註冊時的列表。這樣你可以接取到最後添加的對象來自世界各地喜歡UserDataList [UserDataList.Count - 1] .FirstName

1

顯然您正在使用的用戶類,而不是你初始化的參考對象的實例來自表單數據。這是一個傳統的OOP錯誤。請務必在某處存儲該引用,以免丟失該引用。例如,在您自己的應用程序對象或主窗體中。甚至可能是一個靜態變量,因爲應該只有一個用戶。

User user = new User(); 
user.FirstName = txtFirstName.Text; 

請注意,它無法正確使用該代碼段。 用戶變量是一個局部變量。

+0

我不會說這是一個OOP錯誤。我會說這是對OOP工作方式的一個簡單誤解。 – Chev 2011-04-09 07:11:46