无法在 c# 中从数据库 mysql 的列表视图中显示图像
本文关键字:视图 列表 显示 图像 显示图 数据库 mysql | 更新日期: 2023-09-27 18:35:59
我无法在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();
}
}
}
虽然图像的大小显示在列表视图中,但任何图像都只是空白图像。
希望你帮助我.谢谢
我没有看到您在哪里设置指向ImageList
的IamgeIndex
.
它是ListViewItem
的属性,您可以在添加时或以后随时设置它。
这会将其设置为列表中的最新图像:
listView1.Items.Add(lsvparent, myImageList1.Image.Count - 1);
要稍后更改它,您可以使用:
listView1.Items[23].ImageIndex = 42;
或者,如果你有好听的名字:
listView1.Items[lsvparent].ImageIndex = 0;
请注意,任何ImageList
都限制为一个Size
,最大为256x256像素,所有图像都有一个位深度!
默认图像作为第一个图像加载到ImageList
即在索引 = 0 时,这样您就可以回退到一个通用图像中。