2

如何使用 ListView 向用户显示对象集合并管理这些对象?

4

1 回答 1

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 是我们要添加 ListViewItems 的 ListView。

好的,所以我们在 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.");
    }
}

就是这样。我希望你发现这很有帮助。我不确定这是否是他们设计的有意方面,但是当您使用 ListViewItem 作为键时,ListViews 和字典可以完美地融合在一起,这很有趣!

于 2008-09-19T04:32:03.400 回答