C#listView,将图标添加到现有项目

时间:2017-05-05 13:51:12

标签: c# image winforms listview icons

我想将小图像添加到listView的现有行。 ListView连接到SQLite DB。 当在listView中选择一行并单击按钮" Zakoncz"添加到SQLite DataBase值" 1"专栏" CzyZaznaczone"当这里有价值" 1" listView应该将图像添加到选定的行。 我的图像是在资源中,我可以使用它还是仅使用文件? 现在我的代码为数据库添加了一个值,但没有添加图像。

以下是代码:

SQLiteConnection con = new SQLiteConnection("data source=baza.db");
        SQLiteDataAdapter ada = new SQLiteDataAdapter("select * from Przypominacz", con);
        SQLiteCommand cmd = con.CreateCommand();
        var index = this.listView1.SelectedIndices[0];
        string zaznaczone = this.listView1.Items[index].SubItems[0].Text;
        con.Open();
        cmd.CommandText = "UPDATE Przypominacz SET CzyZakonczone=1 WHERE Nazwa='"+ zaznaczone + "'";
        cmd.ExecuteNonQuery();

        //dodanie ikonki do zakonczonego zadania

        bool result = false;
        string sql = "SELECT * FROM Przypominacz WHERE CzyZaznaczone='1'";
        SQLiteDataReader reader = cmd.ExecuteReader();
        if (reader.Read())
        {
                result = true;
        }
        reader.Close();
        bool rezultat = result;

        if(rezultat==true)
        {
            for (int i = listView1.SelectedItems.Count - 1; i >= 0; i--)
            {
                ImageList imageList = new ImageList();
                imageList.Images.Add(Image.FromFile("D:\\C#\\Przypominacz2 — kopia (4)\\przypominacz\\przypominacz\\Resources\\checked.png"));
                listView1.SmallImageList = imageList;
                var listViewItem = listView1.Items.Add("Item with image");

            }
        }

现在看起来: Without img

但应该是这样的: With img

1 个答案:

答案 0 :(得分:1)

您正在向现有列表添加新ListViewItem,而不是更改所选列表。你可以这样做:

if(rezultat)
{        
    ImageList imageList = new ImageList();
    imageList.Images.Add(Image.FromFile("D:\\C#\\Przypominacz2 — kopia (4)\\przypominacz\\przypominacz\\Resources\\checked.png"));
    listView1.SmallImageList = imageList;

    for (int i = 0; i < listView1.Items.Count; i++ )
    {
        if (listView1.Items[i].Selected)
            listView1.Items[i].ImageIndex = 0;
    }
}

要从资源中将图片添加到ImageList,请查看this question