如何知道listview + imagelist中选择了哪个项目

时间:2014-12-08 17:39:25

标签: c# winforms listview selecteditem imagelist

这是我第一次在这个网站上发帖提问,我需要一些帮助。 这是我的代码

private void loadMatrixOfTables()
{
    try
    {
        var tb = BaSic.db.tb_Tables; //load database with LINQ
        lsvTables.Clear(); //this is my lisview

        foreach (var b in tb)
        {
            if (b.Status == true)
            {
                lsvTables.Items.Add(b.Name,1);
            }
            else
            {
                lsvTables.Items.Add(b.Name, 0);
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error: " + ex.ToString());
    }
}

我的表有两个字段:id和name 我需要做的是获取项目值,而不是项目文本。

1 个答案:

答案 0 :(得分:0)

我不知道 b 的类型,因此该示例使用2个已知属性id和字符串,假设它们分别是int和字符串。只需为包含的类更改它们即可。

首先,您需要创建自己的ListViewItem,以支持在listView上显示名称,并在需要时获取 id 。在你的情况下它看起来像这样:

public class CustomListViewItem : ListViewItem
{
    public CustomListViewItem(int id,  string name)
    {
        Id = id;
        Name = name;
    }

    public int Id { get; set; }
    public string Name { get; set; }
}

使用

首先创建你的项目

var item = new CustomListViewItem(id, name)

要在列表视图中显示刚刚添加的名称:

item.Text = name

然后添加到listView:

lsvTables.Items.Add(item,1)

要检索所选项目的 id ,只需将所选项目强制转换为CustomListViewItem即可。例如:

int id = (CustomListViewItem)lsvTables.SelectedItems[0].Id;