c# - 当我在 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;
}
}
}
}
解决方案
我也在尝试找出解决方案,实际上问题仅在于 Northwind 数据库图像,因此最好使用以下代码:
MemoryStream ms = new MemoryStream();
ms.Write("your photoArray", 78, "your photoArray".Length - 78);
pictureBox1.Image = Image.FromStream(ms);
将您的 byte[] 数组放入“your photoArray”块中。
推荐阅读
- python - 有什么方法可以计算 dtype('
我做了一个减去两个日期时间列的操作,以找出这两个日期之间的持续时间。我对 python 非常陌生,对网站也很陌生,我想知道如何处理 dtype('<m8[ns]'),因为结果输出如下:
ar = pd.to_datetime(['12/31/2015 23:55','1/1/2016 2:47']) print(ar[1]-ar[0])
- json - jq:按值(包含)过滤结果非常慢
- matlab - 如何在没有 Matlab 内置函数的情况下编写 3D 直方图代码?
- flutter - Twitter 身份验证不起作用,并且没有显示具有用户名的主屏幕
- php - EasyAdmin 错误:“Vich\UploaderBundle\Form\Type\VichImageType”,选项“upload_dir”,“upload_filename”不存在
- django - 来自views.py的值,没有反映在HTML页面中:Django
- qt - 如何在 QTreeView 中突出显示项目的路径?
- html - Google Font Roboto + Bootstrap,它们不兼容吗?
- java - 由于 ERROR_GSTREAMER_PIPELINE_STATE_CHANGE,javaFX 媒体在循环中崩溃
- c# - 在c#中使用连续的比较运算符