我正在處理用戶可以創建不同動物的項目。 繼承工作原理如下:列表框顯示類名稱而不是值
動物類是所有類的父類。
哺乳類繼承動物類。
狗類繼承自哺乳動物類。從哺乳動物類
Cat類繼承
爬蟲類繼承從動物類
從爬蟲類蛇類繼承
從爬蟲類的蜥蜴類繼承
用戶能夠選擇要創建的動物。有一個列表框顯示了動物的類型(Mammal
和Reptile
),旁邊有一個列表框,根據用戶選擇的動物類型,它顯示它的動物。
例如,如果用戶在列表框中選擇Mammal
,則旁邊的列表框顯示Dog
和Cat
。
用戶然後可以選擇動物來創建,然後輸入關於該動物的一些信息並創建它以使其顯示在結果列表框上。
我還希望它在結果列表框中選擇動物時顯示食物時間表。 例如,如果用戶在結果列表框中選擇一隻狗(在創建後),狗的食物時間表將顯示在時間表列表框中。
問題是,當我試圖在列表框中選擇一個項目,在附表中加入列表框的唯一事情就是類名FoodSchedule
Assign.FoodSchedule
這裏有我的課程:
有一個FoodSchedule
類作爲班級經理。
public class FoodSchedule
{
private List<string> foodDescriptionList;
public FoodSchedule()
{
foodDescriptionList = new List<string>();
}
public int Count
{
get
{
if ((foodDescriptionList != null))
{
return foodDescriptionList.Count;
}
else
{
return 0;
}
}
}
public void AddScheduleItem(string item)
{
foodDescriptionList.Add(item);
}
public string GetFoodSchedule(int index)
{
if(ValidateIndex(index))
{
return foodDescriptionList[index];
}
else
{
return null;
}
}
public bool ValidateIndex(int index)
{
return ((index >= 0) && (index < foodDescriptionList.Count));
}
}
}
實例變量foodDescriptionList
是字符串元素,其中每個元素是描述餵養時間表的一部分文本的行的集合。
關於日程的信息是被包含並填充在例如Dog
類(硬編碼,通過重寫的方法)的的FoodSchedule
實例
class Dog : Mammal
{
private FoodSchedule foodScedule = new FoodSchedule();
public override FoodSchedule FoodDescription
{
get
{
return this.foodScedule;
}
}
public override string GetSpecies()
{
return "Dog";
}
public override FoodSchedule GetFoodSchedule()
{
foodScedule.AddScheduleItem("Some text");
return foodScedule;
}
我mainForm
:
public partial class MainForm : Form
{
private FoodSchedule m_foodManager = new FoodSchedule();
private Dog m_dog = new Dog();
FoodSchedule animal = m_dog.GetFoodSchedule();
if (animal != null)
{
//Adds to the list.
foodlst.Items.Add(animal.ToString()); //foodlst is the schedule listbox
}
foodlst.DisplayMember = "FoodDescription";
這是因爲你在呼喚加animal.ToString();如果你沒有在類上重載ToString,它只是返回類的名字。你需要做一些像foodlst.Items.Add(animal.GetSpecies()); – 2015-04-03 20:34:48
您需要爲每個類添加ToString方法! – TaW 2015-04-03 20:43:16