【发布时间】:2016-09-19 15:11:19
【问题描述】:
所以为了学校作业,我必须建造一个动物收容所,
有两个对象:猫和狗,对象的每个新实例都被添加到对象列表中,如下所示:
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 对象或 cat 对象,这就是为狗做的:
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();
}
}
无论我尝试什么,当我转换对象时它返回一个空引用,我不知道为什么,任何帮助将不胜感激!
【问题讨论】:
-
因为您在列表框中添加字符串作为元素而不是 Dog
-
你有我应该如何添加它的例子吗?
-
你必须创建一个基类Animal,然后从它继承Cat和Dog,然后创建一个包含
Cat和Dog的List<Animal>作为Animal,然后绑定包含 lbAnimals 的列表,例如lbAnimals.DataSource=animals
标签: c# .net wpf visual-studio listbox