Member 12663465 Ответов: 1

Нужна помощь для C#, связанного с datagridview


вот мое имя базы данных под названием emp
у меня есть одно поле pic datatye это изображение


я создал кнопки под названием UPLOAD, SAVE, DISPLAY-при нажатии кнопки UPLOAD изображение загружается в picturebox. при нажатии кнопки Сохранить изображение сохраняется в базе данных под названием emp -- & gt; изображение хранится в виде & lt;двоичного файла>...Но при нажатии кнопки DISPLAY изображение из базы данных отображается в DATAGRIDVIEW ...

Но мне нужна помощь в datagridview
при щелчке по любой ячейке datagridview изображение из datagridview должно появиться в моем PICTUREBOX


это код для загрузки изображения в c#
try
            {
                OpenFileDialog dlg = new OpenFileDialog();
                dlg.Filter = "png files(*.png)|*.png|jpg files(*.jpg)|*.jpg|All files(*.*)|*.*";
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    imgLoc = dlg.FileName.ToString();
                    picEmp.ImageLocation = imgLoc;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


это код сохранения / вставки изображения
try
          {
              byte[] img = null;
              FileStream fs = new FileStream(imgLoc, FileMode.Open, FileAccess.Read);
              BinaryReader br = new BinaryReader(fs);
              img = br.ReadBytes((int)fs.Length);
              string sql = "INSERT INTO emp values(@img)";
              if (con.State != ConnectionState.Open)
              {
                  con.Open();
                  cmd = new SqlCommand(sql,con);
                  cmd.Parameters.Add(new SqlParameter("@img",img));
                  int x = cmd.ExecuteNonQuery();
                  con.Close();
                  MessageBox.Show("SAVED SUCESSFULLY");
              }
          }
          catch (Exception ex1)
          {
              con.Close();
              MessageBox.Show(ex1.Message);
          }


это код отображения при нажатии кнопки отображения изображение извлекается из базы данных в datagridview
string qry = "select * from emp";
          cmd = new SqlCommand(qry,con);
          da = new SqlDataAdapter(cmd);
          dt = new DataTable();
          da.Fill(dt);
          dataGridView1.DataSource = dt;
          //dataGridView1.RowTemplate.Height = 500;

          foreach (DataGridViewRow row in dataGridView1.Rows)
          {
              row.Height = 300;
          }

          DataGridViewImageColumn image = new DataGridViewImageColumn();
          image = (DataGridViewImageColumn)dataGridView1.Columns[0];
          image.ImageLayout = DataGridViewImageCellLayout.Stretch;


теперь мне нужен код, как отобразить изображение из datagridview в мой picturebox onclick определенной выбранной строки

это код, но он не работает должным образом, Пожалуйста, кто-нибудь предоставьте мне работающий код

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {

            //picEmp.ImageLocation = dataGridView1.Rows[1].Cells[0].Value.ToString();


            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                DataGridViewRow = dataGridView1.Rows[3];
                byte[] data = row.Cells["pic"].Value as byte[];
                if (data != null)
                {
                    MemoryStream ms = new MemoryStream(data);
                    picEmp.Image = Image.FromStream(ms);
                }
            }
           
        }


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

now i need code how to show up the image from datagridview to my picturebox onclick of particular selected row

this is the code but not working properly pls anyone provide me the running code 

<pre>private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {

            //picEmp.ImageLocation = dataGridView1.Rows[1].Cells[0].Value.ToString();


            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                DataGridViewRow = dataGridView1.Rows[3];
                byte[] data = row.Cells["pic"].Value as byte[];
                if (data != null)
                {
                    MemoryStream ms = new MemoryStream(data);
                    picEmp.Image = Image.FromStream(ms);
                }
            }
           
        }

1 Ответов

Рейтинг:
1

OriginalGriff

Когда вы спрашивали об этом в прошлый раз-сегодня утром, - я дал вам код.: Нужна помощь в C#, связанная с datagridview с picturebox[^]
Я вижу, что вы использовали немного этого кода, но проигнорировали материал, который выбрал строку и ячейку ...


Member 12663465

мой друг, я новичок в изучении языка C# с YouTube на каждом шагу
так что если у вас есть рабочий код, пришлите мне ... Мне нравится решение u r, но я другой метод
позвольте мне поделиться с вами кодом
dataGridView1_CellContentClick


частная dataGridView1_CellContentClick недействительным(объект отправителя, DataGridViewCellEventArgs е)
{
Объект sqlconnection кон = новое sqlconnection(@"источник данных=.\именем sqlexpress;начальный каталог=imagestore; Комплексная безопасность=истина;");
SqlDataAdapter sda = new SqlDataAdapter ("select * from emp", con);
DataTable dt = новый DataTable();
ПДД.Заполнить(ДТ);
dataGridView1.Источник данных = ДТ;
byte[] binaryimage = (byte []) dt. Rows[0][0];
Растровое изображение;
используя (трансляция потоке MemoryStream = новая потоке MemoryStream(binaryimage))
{
image = новое растровое изображение (поток);
}
pictureBox1. Image = изображение;
}


в этом методе расскажите, как показать изображение... отображается только одно изображение строка [0][0]
но при щелчке любой ячейки изображение в этом datagridview должно быть отображено
я должен пройти через цикл или цикл foreach для этого это главная проблема в которой я нахожусь

OriginalGriff

Если это качество кода, который вы "изучаете на youtube", то я не удивлен, что вы не знаете, как это сделать самостоятельно. Во всей этой идее так много неправильного, что трудно понять, с чего начать! Так что не буду.

Прекратите "учиться на youtube "- большинство" учебников " - это мусор, произведенный идиотами, которые почти ничего не знают о предмете, кроме того, как заставить его работать в одном конкретном случае. Возьмите себе книгу - или лучше курс-и следуйте ей от начала до конца, выполняя все упражнения. Если вы этого не сделаете, вы знаете, знаете, что вы пропустили, и это вполне может быть то, что делает всю вашу жизнь проще.