如题,图片存在本地的文件夹中,图片的名字就是datagirdview某一列的名字
请给出具体的代码
选择对应某一行可以拿到对应的数据吧,那就把图片展示出来就好了啊
datagridview 添加单击事件 , 在事件里判断 焦点行,读出图片名字,再 根据 名字给picturebox 图赋值。
string id = "";
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
Thread t = new Thread(ShowPic);
t.Start();
}
private void ShowPic()
{
if (this.dataGridView1.SelectedRows.Count > 0)
{
try
{
if (this.dataGridView1.SelectedRows[0].Cells["id"].Value.ToString() == id) return;
id = this.dataGridView1.SelectedRows[0].Cells["id"].Value.ToString();
string path = this.dataGridView1.SelectedRows[0].Cells["picpath"].Value.ToString();
if (!File.Exists(path)) return;
Bitmap bmp = new Bitmap(400, 400);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.White);
Stream fs = new FileStream(path, FileMode.Open);
Image img = Image.FromStream(fs);
try
{
if (img.Height > img.Width)
{
int w = img.Width * 400 / img.Height;
int h = 400;
int x = (400 - w) / 2;
int y = 0;
g.DrawImage(img, new Rectangle(x, y, w, h), new Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel);
fs.Close();
fs.Dispose();
img.Dispose();
}
else
{
int w = 400;
int h = img.Height * 400 / img.Width;
int x = 0;
int y = (400 - h) / 2; ;
g.DrawImage(img, new Rectangle(x, y, w, h), new Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel);
fs.Close();
fs.Dispose();
img.Dispose();
}
pictureBox1.Image = bmp;
pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
}
catch
{
}
finally
{
if (fs != null)
{
fs.Close();
fs.Dispose();
}
if (img != null)
{
img.Dispose();
}
}
}
catch(Exception ex)
{
}
}
}
大体思路是这样实现,需要注意的地方,第一你图片的存放位置在哪里;第二你图片的名称是怎么组成的;第三你的pictureBox是以什么样的方式显示(跟随鼠标显示或者在窗体某一个地方放置一个公用的pictureBox);
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
using (SqlConnection sql = new SqlConnection(sqlconfig))
{
string temp;
temp = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
SqlCommand cmd = new SqlCommand("select SerialCode,ImagePath from dbo.ScannedCorrectInfo ", sql);
sql.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if (dr[0].ToString() == temp)
{
pictureBox1.Image = System.Drawing.Image.FromFile(sDr + dr[1].ToString());
break;
}
}
}
}