2013-12-12 3 views
0

Мне нужна помощь для показа изображений из моего документа datagridview на мой фотобарабан, может ли кто-нибудь помочь мне? Я очень новичок в этом. На этот сайт также.Как отображать изображение с datagridview на картинке?

Я использовал это, чтобы сохранить изображения

private void button1_Click(object sender, EventArgs e) 
    { 
     byte[] imageBt = null; 
     FileStream fstream = new FileStream(this.afbeelding_txt.Text, FileMode.Open, FileAccess.Read); 
     BinaryReader br = new BinaryReader(fstream); 
     imageBt = br.ReadBytes((int)fstream.Length); 

     string constring = "datasource=localhost;port=3306;username=username;password=password"; 
     string Query = "INSERT INTO project.auto (kenteken, merk, type, kleur, deuren, prijscategorie, afbeelding) VALUES('" + this.kenteken_txt.Text + "','" + this.merk_txt.Text + "','" + this.type_txt.Text + "','" + this.kleur_txt.Text + "','" + this.deuren_txt.Text + "','" + this.prijscategorie_txt.Text + "',@IMG) ;"; 
     MySqlConnection conDataBase = new MySqlConnection(constring); 
     MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase); 
     MySqlDataReader myReader; 
     try 
     { 
      conDataBase.Open(); 

      cmdDataBase.Parameters.Add(new MySqlParameter("@IMG", imageBt)); 

      myReader = cmdDataBase.ExecuteReader(); 
      MessageBox.Show("Opgeslagen"); 
      while (myReader.Read()) 
      { 

      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     load_table(); 
    } 

И следующее, чтобы показать DataGridView

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     if(e.RowIndex >= 0) 
     { 
      DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex]; 

      kenteken_txt.Text = row.Cells["kenteken"].Value.ToString(); 
      merk_txt.Text = row.Cells["merk"].Value.ToString(); 
      type_txt.Text = row.Cells["type"].Value.ToString(); 
      kleur_txt.Text = row.Cells["kleur"].Value.ToString(); 
      deuren_txt.Text = row.Cells["deuren"].Value.ToString(); 
      prijscategorie_txt.Text = row.Cells["prijscategorie"].Value.ToString(); 
      afbeelding_txt.Text = row.Cells["afbeelding"].Value.ToString(); 
     } 
    } 

Помимо этого кода PictureBox не упоминается.

private void button6_Click(object sender, EventArgs e) 
    { 
     OpenFileDialog dlg = new OpenFileDialog(); 
     dlg.Filter = "PNG Files(*.png)|*.png|JPG Files(*.jpg)|*.jpg|All Files(*.*)|*.*"; 
     dlg.Title = "Selecteer auto afbeelding."; 
     if (dlg.ShowDialog() == DialogResult.OK) 
     { 
      string picPath = dlg.FileName.ToString(); 
      afbeelding_txt.Text = picPath; 
      pictureBox1.ImageLocation = picPath; 
     } 
    } 

Изображение отображается в DataGridView в этой колонке:

afbeelding_txt.Text = row.Cells["afbeelding"].Value.ToString(); 

Я попытался:

pictureBox1.Image = Image.FromFile(row.Cells["afbeelding"].Value.ToString()); 

И получил следующее сообщение об ошибке:

необработанное исключение типа «System.IO.FileNotFoundException» произошел в System.Drawing.dll

Дополнительная информация: System.Byte []

+0

Где ваш контроль PictureBox? – HICURIN

+0

как вы связываете dataGridView1? есть ли какой-либо столбец для показа изображения? и вам не нужно использовать 'ExecuteReader' для вставки, используйте [ExecuteNonQuery] (http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlcommand.html#connector-net -examples-mysqlcommand-executenonquery) – Damith

+0

Можете ли вы ввести содержимое столбца? Является ли это файловым путем или это массив байтов, который представляет собой изображение? –

ответ

1

Если в столбце есть путь к файлу изображения, используйте Image.FromFile method:

pictureBox1.Image = Image.FromFile(row.Cells["afbeelding"].Value.ToString()); 

Else, если в колонке есть непосредственно изображение значение вы можете использовать метод FromStream, как описано here, в вашем случае:

var data = (Byte[])(row.Cells["afbeelding"].Value); 
var stream = new MemoryStream(data); 
pictureBox1.Image= Image.FromStream(stream); 
+0

Изображения сохраняются в базе данных как BLOB - 64 KiB. Я не знаю, что это изменит? – user2988642

+0

попробуйте второе решение –

+0

Получение ошибки: невозможно преобразовать тип 'string' в 'byte []' – user2988642

Смежные вопросы