[英]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
,使其在不需要列表特定功能的情況下更加通用)
由於AddPersonDialogue
對Form1
AddPersonDialogue
,因此不知道如何獲取personStorage
。 假設您要在Form1
中創建對話框,這里有一些選項:
List<person>
參數的AddPersonDialogue
並將該值分配給屬性。 這樣,您可以在AddPersonDialogue
訪問它。 AddPersonDialogue
的PersonStorage
。 然后,在創建對話框后設置該屬性。 如果列表對於表單的運行是必不可少的,那么我會將其放入構造函數中,以便調用者知道它是必需的組件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.