首页 > 解决方案 > 当我在 C# 中将图像从 Datagrid 视图显示到图片框时以及当我在 datagrid 视图中检查我的图像时出现错误消息

问题描述

当我在 C# 中将图像从数据网格视图显示到图片框以及在数据网格视图中检查图像时,我不断收到错误消息。我从过去 3 天开始一​​直在努力解决这个问题,但没有成功,所以这是请求


这是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;
namespace MeterConnectionSystem
{
    public partial class Form3 : Form
    {
        SqlConnection con = new SqlConnection("Data Source=UMERMUGHAL;Initial Catalog=PattikaMeterConnections;Integrated Security=True;Pooling=False");

        public Form3()
        {
            InitializeComponent();
        }
        //void BindData()
        //{
        //    SqlConnection con = new SqlConnection("Data Source=UMERMUGHAL;Initial Catalog=PattikaMeterConnections;Integrated Security=True;Pooling=False");

        //    SqlCommand cmd = new SqlCommand("SELECT *FROM EmployeeData", con);
        //    SqlDataAdapter sda = new SqlDataAdapter(cmd);
        //    DataTable dt = new DataTable();
        //    sda.Fill(dt);
        //    dataGridView3.DataSource = dt;


        //}

        private void button5_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog ofdlg = new OpenFileDialog())
            {
                if ((ofdlg.ShowDialog() == DialogResult.OK))
                {
                    pictureBox1.Image = Image.FromFile(ofdlg.FileName);
                }

            }
            //ofdlg.Title = "Open Image";
            //ofdlg.Filter = "Image Files(*.JPG;*.PNG;*.GIF) | *.JPG;*.PNG;*.GIF ";
            //if (ofdlg.ShowDialog() == DialogResult.OK)
            //{
            //    // pictureBox1.Image = Image.FromFile(ofdlg.FileName);
            //    pictureBox1.Image = new Bitmap(ofdlg.FileName);
                    
            //}
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Image img = pictureBox1.Image;
            byte[] arr;
            ImageConverter converter = new ImageConverter();
            arr = (byte[])converter.ConvertTo(img, typeof(byte[]));
            //var imageconverter = converter.ConvertTo(pimg, typeof(byte[]));
            //MemoryStream mmst = new MemoryStream();
            //pictureBox1.Image.Save(mmst, pictureBox1.Image.RawFormat);
            //byte[] img = mmst.ToArray();
            //dataGridView3.Rows.Add(img);

            try
            {
                con.Open();
                SqlCommand cmd = new SqlCommand("insert into EmployeeData values (@AgPersonalNumber, @Cnic, @DOB,@Name,@FatherName,@Post,@BPS,@Address,@TownVillage,@BloodGroup,@MobileNumber,@PresentWorking,@JobStatus,@SubOffice,@image)", con);
                cmd.Parameters.AddWithValue("@AgPersonalNumber", int.Parse(agpersonaltextbox.Text));
                cmd.Parameters.AddWithValue("@Cnic", cnictextbox.Text);
                cmd.Parameters.AddWithValue("@DOB", Convert.ToDateTime(dobtextbox.Text));
                cmd.Parameters.AddWithValue("@Name", nametextbox.Text);
                cmd.Parameters.AddWithValue("@FatherName", fathernametextbox.Text);
                cmd.Parameters.AddWithValue("@Post", posttextbox.Text);
                cmd.Parameters.AddWithValue("@BPS", bpscombobox.Text);
                cmd.Parameters.AddWithValue("@Address", addresstextbox.Text);
                cmd.Parameters.AddWithValue("@TownVillage", townvillagetextbox.Text);
                cmd.Parameters.AddWithValue("@BloodGroup", bloodgroupcombobox.Text);
                cmd.Parameters.AddWithValue("@MobileNumber", mobilenumbertextbox.Text);
                cmd.Parameters.AddWithValue("@PresentWorking", presentworkingtextbox.Text);
                cmd.Parameters.AddWithValue("@JobStatus", jobstatuscombobox.Text);
                cmd.Parameters.AddWithValue("@SubOffice", subofficetextbox.Text);
                //cmd.Parameters.AddWithValue("@image", imageconverter);
                cmd.Parameters.AddWithValue("@image", arr);
                //cmd.Parameters.AddWithValue("@image", img);

                cmd.ExecuteNonQuery();
                MessageBox.Show("Insert Successfully");
                //BindData();
                SqlCommand cmd2 = new SqlCommand("SELECT *FROM EmployeeData", con);
                DataTable dt = new DataTable();
                dt.Load(cmd2.ExecuteReader());
                dataGridView3.DataSource = dt;





                con.Close();

            }
            catch (Exception ex)
            {
                MessageBox.Show(" Not Insert " + ex.Message);
                con.Close();
            }



            agpersonaltextbox.Clear();
            cnictextbox.Clear();
            //dobtextbox.Clear();
            nametextbox.Clear();
            fathernametextbox.Clear();
            posttextbox.Clear();
            //bpscombobox.Clear();
            addresstextbox.Clear();
            townvillagetextbox.Clear();
            //bloodgroupcombobox.Clear();
            mobilenumbertextbox.Clear();
            presentworkingtextbox.Clear();
            //jobstatuscombobox.Clear();
            subofficetextbox.Clear();
            pictureBox1.Image = null;
            //textBox18.Clear();
            //textBox19.Clear();
        }

        private void Form3_Load(object sender, EventArgs e)
        {
            con.Open();
            SqlCommand cmd2 = new SqlCommand("SELECT *FROM EmployeeData", con);
            DataTable dt = new DataTable();
            dt.Load(cmd2.ExecuteReader());
            dataGridView3.DataSource = dt;
            con.Close();
        }

        private void button6_Click(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            Image img = pictureBox1.Image;
            byte[] arr;
            ImageConverter converter = new ImageConverter();
            arr = (byte[])converter.ConvertTo(img, typeof(byte[]));

            try
            {

                con.Open();
                //SqlCommand cmd = new SqlCommand("update EmployeeData set AgPersonalNumber ='" + int.Parse(agpersonaltextbox.Text) + "', Cnic ='" + cnictextbox.Text + "', DOB='" + DateTime.Parse(dobtextbox.Text) + "', Name='" + nametextbox.Text + "',FatherName='" + fathernametextbox.Text + "',Post='" + posttextbox.Text + "',BPS='" + bpscombobox.Text + "',Address= '" + addresstextbox.Text + "',TownVillage='" + townvillagetextbox.Text + "',BloodGroup= '" + bloodgroupcombobox.Text + "',MobileNumber='" + mobilenumbertextbox.Text + "',PresentWorking='" + presentworkingtextbox.Text + "',JobStatus='" + jobstatuscombobox.Text + "',SubOffice='" + subofficetextbox.Text + "',Image='" + arr + "' where AgPersonalNumber ='" + int.Parse(agpersonaltextbox.Text) + "' ", con);
                SqlCommand cmd = new SqlCommand("update EmployeeData set  Cnic ='" + cnictextbox.Text + "', DOB='" + DateTime.Parse(dobtextbox.Text) + "', Name='" + nametextbox.Text + "',FatherName='" + fathernametextbox.Text + "',Post='" + posttextbox.Text + "',BPS='" + bpscombobox.Text + "',Address= '" + addresstextbox.Text + "',TownVillage='" + townvillagetextbox.Text + "',BloodGroup= '" + bloodgroupcombobox.Text + "',MobileNumber='" + mobilenumbertextbox.Text + "',PresentWorking='" + presentworkingtextbox.Text + "',JobStatus='" + jobstatuscombobox.Text + "',SubOffice='" + subofficetextbox.Text + "',Image='" + arr + "' where AgPersonalNumber ='" + int.Parse(agpersonaltextbox.Text) + "' ", con);

                cmd.ExecuteNonQuery();
                MessageBox.Show("Updated Successfully");
                //BindData();
                SqlCommand cmd2 = new SqlCommand("SELECT *FROM EmployeeData", con);
                DataTable dt = new DataTable();
                dt.Load(cmd2.ExecuteReader());
                dataGridView3.DataSource = dt;
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(" Not Updated " + ex.Message);
                con.Close();
            }
        }


        private void dataGridView3_DoubleClick(object sender, EventArgs e)
        {
            agpersonaltextbox.Clear();
            cnictextbox.Clear();
            //dobtextbox.Clear();
            nametextbox.Clear();
            fathernametextbox.Clear();
            posttextbox.Clear();
            //bpscombobox.Clear();
            addresstextbox.Clear();
            townvillagetextbox.Clear();
            //bloodgroupcombobox.Clear();
            mobilenumbertextbox.Clear();
            presentworkingtextbox.Clear();
            //jobstatuscombobox.Clear();
            subofficetextbox.Clear();
            pictureBox1.Image = null;

            if (dataGridView3.CurrentRow.Index != -1)
            {
                agpersonaltextbox.Text = dataGridView3.CurrentRow.Cells[0].Value.ToString();

                cnictextbox.Text = dataGridView3.CurrentRow.Cells[1].Value.ToString();
                dobtextbox.Text = dataGridView3.CurrentRow.Cells[2].Value.ToString();
                nametextbox.Text = dataGridView3.CurrentRow.Cells[3].Value.ToString();
                fathernametextbox.Text = dataGridView3.CurrentRow.Cells[4].Value.ToString();
                posttextbox.Text = dataGridView3.CurrentRow.Cells[5].Value.ToString();
                bpscombobox.Text = dataGridView3.CurrentRow.Cells[6].Value.ToString();
                addresstextbox.Text = dataGridView3.CurrentRow.Cells[7].Value.ToString();
                townvillagetextbox.Text = dataGridView3.CurrentRow.Cells[8].Value.ToString();
                bloodgroupcombobox.Text = dataGridView3.CurrentRow.Cells[9].Value.ToString();
                mobilenumbertextbox.Text = dataGridView3.CurrentRow.Cells[10].Value.ToString();
                presentworkingtextbox.Text = dataGridView3.CurrentRow.Cells[11].Value.ToString();
                jobstatuscombobox.Text = dataGridView3.CurrentRow.Cells[12].Value.ToString();
                subofficetextbox.Text = dataGridView3.CurrentRow.Cells[13].Value.ToString();
                
                
                byte[] imgdata = (byte[])dataGridView3.CurrentRow.Cells[14].Value;
                MemoryStream ms = new MemoryStream(imgdata);
                pictureBox1.Image = Image.FromStream(ms);

                
              

                //System.IO.MemoryStream ms = new System.IO.MemoryStream((byte[])dataGridView3.CurrentRow.Cells[14].Value);
                //pictureBox1.Image = Image.FromStream(ms);
                //pictureBox1.Image = new Bitmap(ms);
                //ms.Position = 0;

            }
        }

       

        
    }
}
    

我收到的错误消息

当我在数据网格视图中移动滑块以检查图像时得到的代码

标签: c#imagedatagridviewpicturebox

解决方案


我也在尝试找出解决方案,实际上问题仅在于 Northwind 数据库图像,因此最好使用以下代码:

MemoryStream ms = new MemoryStream();
ms.Write("your photoArray", 78, "your photoArray".Length - 78);
pictureBox1.Image = Image.FromStream(ms);

将您的 byte[] 数组放入“your photoArray”块中。


推荐阅读