因此,對於學校裏的功課我必須做的一個動物收容所,嘗試投射listbox.selecteditem時的空引用?
有兩個對象:貓,狗,對象的每個新實例添加到對象列表如下:
public Cat Cat { get; private set; }
public Dog Dog { get; private set; }
public List<Dog> Dogs = new List<Dog>();
public List<Cat> Cats = new List<Cat>();
public void NewCat(string name, Gender gender, string badHabits)
{
this.Cat = new Cat(name, gender, badHabits);
Cats.Add(this.Cat);
}
public void NewDog(string name, Gender gender)
{
this.Dog = new Dog(name, gender);
Dogs.Add(this.Dog);
}
與更新方法兩份名單被添加到一個列表框這樣的:
private void Update()
{
lbAnimals.Items.Clear();
lbAnimals.Items.Clear();
foreach (Cat c in reservations.Cats)
{
lbAnimals.Items.Add(c.ToString());
}
foreach (Dog d in reservations.Dogs)
{
lbAnimals.Items.Add(d.ToString());
}
}
最後,我需要轉換所選對象的列表框中一個Dog對象或貓的對象,這是它是如何的做狗:
private void btnReserveDog_Click(object sender, EventArgs e)
{
if (this.reservations.Dog != null)
{
var d= lbAnimals.SelectedItem as Dog;
d.Reserve(txtReservor.Text);
this.btnReserveDog.Enabled = false;
Update();
}
}
無論我似乎嘗試什麼,當我投對象時它返回一個空引用,我不知道爲什麼,任何幫助將不勝感激!
因爲你在列表框中添加字符串作爲元素不是狗 –
你也許有一個例子,我應該怎麼加呢? –
你必須創建一個基類Animal,然後從它繼承Cat和Dog,然後創建一個''List'',其中包含''Cat''和''Dog''爲''Animal'',然後綁定該列表lbAnimals像lbAnimals.DataSource =動物'' –