如何通过选择行从dataGridView显示图像并在C#WindowsForm中将图像显示到pictureBox
问题:无法将图像从datagridView检索到pictureBox。
我试过代码下面如何通过从dataGridView中选择来显示图片框上的图像,该数据已作为字节保存在数据库中。但错误发生,因为System.String无法转换为system.Byte和当我尝试其他代码它说无效参数这里是我的代码下面:
我希望你能解决我的问题,并帮助我解决这个问题。
private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
try
{
label21.Text = dataGridView1.SelectedRows[0].Cells["M_FirstName"].Value.ToString();
textBox1.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
textBox2.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
textBox3.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();
textBox6.Text = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();
textBox7.Text = dataGridView1.SelectedRows[0].Cells[6].Value.ToString();
textBox8.Text = dataGridView1.SelectedRows[0].Cells[7].Value.ToString();
textBox9.Text = dataGridView1.SelectedRows[0].Cells[8].Value.ToString();
textBox10.Text = dataGridView1.SelectedRows[0].Cells[9].Value.ToString();
//First try to select image from datagridview and display to picturebox
byte[] image = Encoding.ASCII.GetBytes(dataGridView1.SelectedRows[0].Cells[10].Value.ToString());
if (image == null)
pictureBox1.Image = null;
else
{
var ms= new MemoryStream(image);
//Error is Invalid Argument (ms)
pictureBox1.Image = Image.FromStream(ms);
}
//Second try to select image from datagridview and display to picturebox
//When I tried this code below the Error shows that "*Unable to Cast Object of type 'System.String' to type 'System.Byte[]'*"
var data = (Byte[])(dataGridView1.SelectedRows[0].Cells[10].Value);
var stream = new MemoryStream(data);
pictureBox1.Image = Image.FromStream(stream);
//Both the Code Above does not work to select image from datagridview and display on picturebox
//How can I do to make it work.
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
*****我的代码将图片上传到pictureBox *****
浏览图片的代码
try
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "*.jpg files(*.jpg)|*.jpg| PNG files(*.png)|*.png| All Fies(*.*)|*.*";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
imagelocation = dialog.FileName;
pictureBox1.ImageLocation = imagelocation;
}
}
catch (Exception)
{
MessageBox.Show("An Error Occured", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
******我的代码将图像保存到数据库*****
将图像保存到数据库的代码
try
{
if (textBox2.Text == "" || textBox3.Text == "" || comboBox1.Text == "" || textBox6.Text == "" || textBox7.Text == "" || textBox8.Text == "" || textBox9.Text == "" || textBox10.Text == "")
{
MessageBox.Show("Please Fill all the fields !");
}
else
{
byte[] image = null;
FileStream Streem = new FileStream(imagelocation, FileMode.Open, FileAccess.Read);
BinaryReader brs = new BinaryReader(Streem);
image = brs.ReadBytes((int)Streem.Length);
con.Open();
String qry = "Insert Into membership_tbl values('" + textBox2.Text + "','" + textBox3.Text + "','" + comboBox1.Text + "','" + dateTimePicker1.Text + "','" + textBox6.Text + "','" + textBox7.Text + "','" + textBox8.Text + "','" + textBox9.Text + "','" + textBox10.Text + "',@image)";
cmd = new SqlCommand(qry, con);
cmd.Parameters.Add(new SqlParameter("@image", image));
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("Member Added ! ");
clear();
Membership mem = new Membership();
mem.Show();
this.Hide();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}