Ella1010 Ответов: 1

Как получить изображение из datagridview в picturebox в C#?


Мне нужна ваша помощь, ребята..

Я хочу получить изображение из datagridview в picturebox. Ниже приведен мой код, и я получаю ошибку в событии щелчка ячейки datagridview :( Ребята, вы можете мне помочь? Мне очень нужна ваша помощь :(

Что я уже пробовал:

Вот мой код для просмотра картинки в picturebox:

string img_file = null;
        private void button13_Click(object sender, EventArgs e)
        {
            OpenFileDialog o = new OpenFileDialog();
            if (o.ShowDialog() != DialogResult.Cancel)
            {
                img_file = o.FileName;
                pictureBox1.Image = Image.FromFile(o.FileName);
            }
        }

While here`s my code for saving image to database:


if (img_file != null)
            {

                FileStream fs = new FileStream(img_file, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                byte[] image = new byte[fs.Length];
                fs.Read(image, 0, Convert.ToInt32(fs.Length));
                fs.Close();

                if (textBox2.Text != "" && comboBox13.Text != "" && comboBox1.Text != "" && dateTimePicker1.Text != "" && comboBox3.Text != "" && textBox4.Text != "" && textBox5.Text != "" && textBox6.Text != "" && textBox7.Text != "")
                {
                    SqlConnection con = new SqlConnection(cs);
                    SqlCommand cmd = new SqlCommand("insert into tbl_Inquiry(Dog_Name,Breed,Color,Birthday,Gender,Size,Owners_Last_Name,Owners_First_Name,Contact_No,Address,Date_Registered,Image) values (@dogname,@breed,@color,@birthday,@gender,@size,@lastname,@firstname,@contactno,@address,@date,@image)", con);
                    con.Open();
                    cmd.Parameters.AddWithValue("@dogname", textBox2.Text);
                    cmd.Parameters.AddWithValue("@breed", comboBox13.Text);
                    cmd.Parameters.AddWithValue("@color", comboBox1.Text);
                    cmd.Parameters.AddWithValue("@birthday", dateTimePicker1.Text);
                    cmd.Parameters.AddWithValue("@gender", comboBox2.Text);
                    cmd.Parameters.AddWithValue("@size", comboBox3.Text);
                    cmd.Parameters.AddWithValue("@lastname", textBox5.Text);
                    cmd.Parameters.AddWithValue("@firstname", textBox6.Text);
                    cmd.Parameters.AddWithValue("@contactno", textBox7.Text);
                    cmd.Parameters.AddWithValue("@address", textBox4.Text);
                    cmd.Parameters.AddWithValue("@date", DateTime.Now.ToShortDateString());
                    SqlParameter prm = new SqlParameter("@image", SqlDbType.Image, image.Length, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, image);
                    cmd.Parameters.Add(prm);
                    cmd.ExecuteNonQuery();
                    con.Close();

                   
                    MessageBox.Show("Sucessfully Save!");
                    DisplayData();
                    ClearData();
                }
                else
                {
                    MessageBox.Show("Missing details! Please try again!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

And lastly, here`s my code for retrieving image from datagridview to picturebox:


    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            textBox1.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
            textBox2.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
            comboBox13.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
            comboBox1.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
            dateTimePicker1.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
            comboBox2.Text = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();
            comboBox3.Text = dataGridView1.SelectedRows[0].Cells[6].Value.ToString();
            textBox5.Text = dataGridView1.SelectedRows[0].Cells[7].Value.ToString();
            textBox6.Text = dataGridView1.SelectedRows[0].Cells[8].Value.ToString();
            textBox7.Text = dataGridView1.SelectedRows[0].Cells[9].Value.ToString();
            textBox4.Text = dataGridView1.SelectedRows[0].Cells[10].Value.ToString();

byte[] bytes = (byte[]) dtaGridView1.SelectedRows[0].Cells[11].Value;
MemoryStream ms = new MemoryStream(bytes);
pictureBox1.Image = Image.FromStream(ms);
}

1 Ответов

Рейтинг:
1

kanangandhi

byte[] bytes = (byte[]) dtaGridView1.SelectedRows[0].Cells[11].Value;
MemoryStream ms = new MemoryStream(bytes);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
pictureBox1.Image = img;