我无法在Listview中显示我的数据库中的图像,尽管我可以检索一些数据,例如我的标题。
查看我的代码:
public void LoadBooks()
{
MySqlConnection connection = new MySqlConnection(MyConnectionString);
connection.Open();
try
{
listView1.Clear();
ImageList myImageList1 = new ImageList();
myImageList1.ImageSize = new System.Drawing.Size(80, 80);
listView1.LargeImageList = myImageList1;
MySqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "Select * from booktable";
MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
DataTable ds = new DataTable();
adap.Fill(ds);
foreach (DataRow dr in ds.Rows)
{
byte[] byteBLOBData = (byte[])dr["bookphoto"];
var stream = new MemoryStream(byteBLOBData);
Image bookimages= Image.FromStream(stream);
myImageList1.Images.Add(bookimages);
ListViewItem lsvparent = new ListViewItem();
lsvparent.Text = dr["booktitle"].ToString();
listView1.Items.Add(lsvparent);
}
}
catch (Exception)
{
throw;
}
finally
{
if (connection.State == ConnectionState.Open)
{
connection.Close();
}
}
}
虽然图像的大小显示在列表视图中,但有任何图像只是一个空白图像。
希望你能帮助我。谢谢答案 0 :(得分:0)
我看不到您将IamgeIndex
设置为指向ImageList
的位置。
这是ListViewItem
的属性,您可以在添加时或以后随时设置。
这会将其设置为列表中的最新图像:
listView1.Items.Add(lsvparent, myImageList1.Image.Count - 1);
要稍后更改,您可以使用:
listView1.Items[23].ImageIndex = 42;
或者,如果你有好听的名字:
listView1.Items[lsvparent].ImageIndex = 0;
请注意,任何ImageList
都限制为一个Size
,最多256x256像素,所有图像都有一位深度!
最好将默认图像作为第一个加载到ImageList
,即索引= 0,这样你就可以使用一个普通的图像。