C# 选中datagridview的一行,picturebox自动跳出对应的图片

如题,图片存在本地的文件夹中,图片的名字就是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;
                    }
                }
              
            }
        }