【问题标题】:C# listView, add icon to existing itemC# listView,将图标添加到现有项目
【发布时间】:2017-10-04 01:02:05
【问题描述】:

我想将小图像添加到现有行 i listView。 ListView 连接到 SQLite DB。 当在 listView 中选择某行并单击“Zakoncz”按钮时,会将 SQLite 数据库值“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

【问题讨论】:

    标签: c# image winforms listview icons


    【解决方案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

    【讨论】:

    • 对不起,但无论如何都没有结果:(
    • @themati91 将答案标记为解决方案是一种表示感谢的方式:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多