如何使用ListView向用户显示对象集合以及管理这些对象?
答案 0 :(得分:7)
出于争论的目的,这是我们的设计目标:我们有一个“怪物”对象,而“怪物”将拥有几个“权力”。用户通过ListView项目与权力交互。
首先,我们创建一个Power对象。为对象提供以下方法:
public ListViewItem makeKey()
{
return new ListViewItem(name);
}
其中name是权力的名称和字符串。这个ListViewItem将作为一个键,允许我们以后识别和检索这个权力。
接下来,我们需要在Monster对象中添加一些内容来跟踪所有这些功能。
public Dictionary<ListViewItem,Power> powers;
所以现在我们需要一种方法来增加怪物的力量。
public void addPower(Power newPower) {
ListViewItem key = newPower.makeKey();
monster.powers.add(key, newPower);
}
好的,差不多完成了!现在我们有了ListViewItems的字典,它与怪物的力量有关。只需从该字典中获取密钥并将其粘贴在ListView中:
foreach (ListViewItem key in powers.Keys)
powerList.Items.Add(key);
如果powerList是ListView,我们将ListViewItems添加到。
好的,所以我们在ListView中得到了ListViewItems!现在,我们如何与这些互动?做一个按钮,然后是一个像这样的函数:
private void powerRemoveButton_Click(object sender, EventArgs e)
{
if (powerList.SelectedIndices.Count > 0)
{
int n = powerList.SelectedIndices[0];
ListViewItem key = powerList.Items[n];
monster.powers.Remove(key);
powerList.Items.Remove(key);
}
else
{
MessageBox.Show("No power selected.");
}
}
就是这样。我希望你发现这很有帮助。我不确定这是否是他们设计的一个有意义的方面,但ListViews和Dictionaries在使用ListViewItem作为关键时非常好地融合在一起,这是一种快乐!