[英]How to Output from Generic Array List, to Listbox?
我正在嘗試從數組列表輸出到列表框。 我的問題是我想我不知道如何將Class連接到Generic數組列表嗎? 最終結果應如下所示:
然后對信息進行如下排序:所有信息都進入第一個列表框,然后上面的18位進入成人,下面的18位進入孩子。 我的課看起來像這樣:
namespace Patients
{
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public String Password { get; set; }
public Person() //Constructor
{
Age = 0;
Password = "";
}
public Person (string name, int age, string password) //Parameters
{
this.Name = name;
this.Age = age;
this.Password = password;
}
public override string ToString() //
{
return Name + Age.ToString() + Password; //outputs as a string
// return Name + " (" + Age + " years) " + Password ;
}
}
}
namespace Patients
{
public partial class WebForm1 : System.Web.UI.Page
{
public static void Page_Load(object sender, EventArgs e)
{
}
public void ButtonAdd_Click(object sender, EventArgs e)
{
Person p = new Person();
List<string> People = new List<string>();
People.Add(TextBoxName.Text);
People.Add(TextBoxAge.Text);
People.Add(TextBoxPassword.Text);
foreach (object Person in People)
{
ListBoxAll.Items.Add(p.Name + p.Age.ToString() + p.Password);
}
if (p.Age > 18)
{
ListBoxAdults.Items.Add(p.Name + p.Age.ToString() + p.Password);
}
else
{
ListBoxKids.Items.Add(p.Name + p.Age.ToString() + p.Password);
}
}
}
}
看起來您正在混搭一些。 嘗試這樣的事情。
Person p = new Person();
p.Name = TextBoxName.Text;
p.Age= TextBoxAge.Text;
p.Password= TextBoxPassword.Text;
ListBoxAll.Items.Add(p);
我認為您的問題是,您沒有設置屬性。 實際上,您根本不需要列表,但可以使用列表來保留您的患者。 仍然沒有必要:
namespace Patients
{
public partial class WebForm1 : System.Web.UI.Page
{
// Define Property and initialize List
public List<Person> patients{ get; } = new List<Person>();
public static void Page_Load(object sender, EventArgs e)
{
}
public void ButtonAdd_Click(object sender, EventArgs e)
{
// Use the Constructor with Parameters
Person p = new Person(TextBoxName.Text, TextBoxAge.Text, TextBoxPassword.Text);
// Add your patient to your List
patients.Add(p);
// Use the ToString() of your Person
ListBoxAll.Items.Add(p.ToString());
if (p.Age > 18)
{
ListBoxAdults.Items.Add(p.ToString());
}
else
{
ListBoxKids.Items.Add(p.ToString());
}
}
}
}
一些對我們有益的技巧,首先,您可以為屬性聲明默認值,例如:
public string Name { get; set; } = "Steve";
public int Age { get; set; } = 1;
public String Password { get; set; } = "password";
但是,還應該注意,“”已經是字符串的默認值,而0是不可空int的默認值,因此您甚至不必擔心這些默認值。
宣布Age = 0;
在這種情況下,在構造函數中基本上是浪費時間。 (如果它是可為null
int,但默認值為null
)
接下來,由於您可以使用默認值,因此無需像在構造函數中那樣聲明屬性。
您可以完全刪除構造函數,只需執行以下操作:
var myPerson = new Person { Name = "Steve", Age = 18, Password = "Foo" };
接下來,一旦退出按鈕單擊范圍,您將失去所有現有人員。
取而代之的是,您將要聲明兩個不在click方法范圍內的人員列表(以這種方式持久):“成人”和“兒童”
然后也許創建一個名為“ PopulateLists”的方法,該方法將執行以下操作:
單擊該按鈕時,您應該結識一個新人,將其分配到正確的列表,然后調用PopulateLists()
這是您需要入門的信息:
Linq選擇以獲取屬性列表(在這種情況下,我將把人列表變成年齡列表,但是您可以對名稱進行相同操作)
var ages = People.Select(p => p.Age);
ListBox的.Items屬性與列表相同,只是在視覺上顯示自己。 這是一個專門的字符串列表。
因此,例如,您可以做...
MyListBox.Items.Clear();
MyListBox.Items.Add(...);
MyListBox.Items.AddRange(...);
等等等
那應該讓您開始!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.