簡體   English   中英

C# WPF Want to store data in a class and use it in multiple different classes in different wpf windows

[英]C# WPF Want to store data in a class and use it in multiple different classes in different wpf windows

我有3節課。 第一個存儲信息,第二個將信息分配給第一個 class,第三個從第一個 class 讀取信息。

第一個 Class,未分配給任何 WPF window

public class ProfileInfo //Used to store Name and Surname Data
    {
        public string User_Name { get; set; }
        public string User_Surname { get; set; }
    }

第二個 Class,位於 WPF window 1

public class InsertInfo //Reads data and stores it in Class 1
    {
        ProfileInfo p = new ProfileInfo();
        p.User_Name = "Bob"; //Example value but normally is read from db
        p.User_Surname = "Jhones"; //Example value but normally is read from db
    }

第 3 個 Class,位於 WPF window 2

public class ReadInfo //Reads data from Class 1 and displays it using MessageBox.Show
    {
        ProfileInfo p = new ProfileInfo();
        MessageBox.Show(p.User_Name); // I want this to display Bob but it displays an empty value
        MessageBox.Show(p.User_Surname);
    }

我希望 Class 1 存儲信息,直到我結束程序,以便我可以檢索多個類中的數據。

據我了解,這不起作用,因為在第三個 Class 中,我調用了一個完全不同的 Class 1 實例,其中沒有存儲數據??? 如果是這樣,我該如何進行這項工作?

我在整個互聯網上尋找一種在類之間共享數據的方法,但一切似乎都如此困難且難以理解。 我是初學者,所以如果可能的話,請嘗試用不太專業的語言來解釋它。

問題是您InsertInfo class 中創建了一個ProfileInfo實例,但在第三個 class ReadInfo中,您創建了另一個ProfileInfo實例,該實例默認為空。 我不知道您的系統的詳細信息,但您可以嘗試在InsertInfo class 中將ProfileInfo字段設置為 static 屬性,然后您可以從其他類中訪問它:

public class InsertInfo
{
    private static ProfileInfo p = new ProfileInfo();
    public static ProfileInfo P { get { return p; } }

    public void AssignProfileInfo(string username, string surname)
    {
        p.User_Name = username;
        p.User_Surname = surname;
    }
}

然后,要訪問存儲的 ProfileInfo,您可以訪問 static 屬性:

public class ReadInfo
{
    ProfileInfo p = InsertInfo.P;

    public void ShowInfo()
    {
        MessageBox.Show(p.User_Name); 
        MessageBox.Show(p.User_Surname);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM