簡體   English   中英

訪問表單之外的對象的列表

[英]Accessing a list with objects outside form

我有一個表格,其中有一個存儲對象的列表。 然后,我有一個對話框,希望在其中訪問此列表並循環瀏覽其內容。

主要形式:

namespace personregister
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }      

    public List<person> personStorage = new List<person>();

在對話中,我想做這樣的事情:

namespace personregister
{
public partial class AddPersonDialogue : Form
{
    public AddPersondialogue()
    {
        InitializeComponent();            
        foreach (person p in personStorage)
        {
          //do stuff
        }
    }

問題是我無法訪問以其他形式創建的personStorage。 如何在對話窗口中訪問該列表?

添加一個方法來執行對話框並在對話框構建后調用。

public partial class AddPersonDialogue : Form
{
    public AddPersonDialogue()
    {
        InitializeComponent();            

    }

    public void SetUpPeople(List<person> personStorage)
    {
        foreach (person p in personStorage)
        {
          //do stuff
        }
    }
}

 public Form1()
 {
    {
        InitializeComponent();
    }      

    public List<person> personStorage = new List<person>();

    public void ShowForm()
    {
        var dialogue = new AddPersonDialogue();

        dialogue.SetUpPeople(personStorage);

        dialogue.Show();
    }
}

您也可以通過構造函數來實現。

public partial class AddPersonDialogue : Form
{
    public AddPersonDialogue(List<person> personStorage)
    {
        InitializeComponent();
        foreach (person p in personStorage)
        {
          //do stuff
        }       

    }
}

編輯

現在,您已將函數重命名以表明它是一個構造函數-最好使用下面的選項1。 只需將IList<person> personStorage添加為構造函數的參數即可。 (或IEnumeable<person> personStorage ,使其在不需要列表特定功能的情況下更加通用)


由於AddPersonDialogueForm1 AddPersonDialogue ,因此不知道如何獲取personStorage 假設您要在Form1中創建對話框,這里有一些選項:

  1. 將一個構造函數添加到采用List<person>參數的AddPersonDialogue並將該值分配給屬性。 這樣,您可以在AddPersonDialogue訪問它。
  2. 將公共屬性添加到AddPersonDialoguePersonStorage 然后,在創建對話框后設置該屬性。

如果列表對於表單的運行是必不可少的,那么我會將其放入構造函數中,以便調用者知道它是必需的組件。

暫無
暫無

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

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