上传图片,显示图片
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.IO; namespace WAJS { public partial class F_HJWF_UploadImg : Form { string djbh = ""; public F_HJWF_UploadImg(string _djbh) { djbh = _djbh; InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { openFileDialog1.InitialDirectory = "C:\\"; openFileDialog1.Filter = "图片文件 (*.jpg)|*.jpg"; openFileDialog1.FilterIndex = 1; openFileDialog1.RestoreDirectory = true; openFileDialog1.Multiselect = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { textBox1.Text = openFileDialog1.FileName; } } //上传按钮事件处理 private void button2_Click(object sender, EventArgs e) { Save(PhotoToArray(textBox1.Text.ToString())); show(); } //将图片信息转换成二进制信息 private byte[] PhotoToArray(string path) { FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read); byte[] bufferPhoto = new byte[stream.Length]; stream.Read(bufferPhoto, 0, Convert.ToInt32(stream.Length)); stream.Flush(); stream.Close(); return bufferPhoto; } //把二进制的图片插到数据库 private void Save(byte[] image) { string sql = "UPDATE HJWF SET TPSC = (@TPSC) where id = "+djbh; SqlParameter param = new SqlParameter(); param = new SqlParameter("@TPSC", SqlDbType.Image); param.Value = image; SqlConnection SaveDataConnect = new SqlConnection(AppTool.ConStr); SqlCommand commd = new SqlCommand(sql, SaveDataConnect); commd.Parameters.Add(param); try { SaveDataConnect.Open(); commd.ExecuteNonQuery(); MessageBox.Show("您已经把图片成功的更新到数据库!"); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { SaveDataConnect.Close(); } } //显示图片按钮事件处理 private void show() { string strSQL = "Select [TPSC] From [HJWF] Where id = "+djbh; SqlParameter param = new SqlParameter(); //param = new SqlParameter("@photo", SqlDbType.Int); //param.Value = comboBox1.Text.ToString(); SqlConnection SaveDataConnect = new SqlConnection(AppTool.ConStr); SqlCommand cmd = new SqlCommand(strSQL, SaveDataConnect); //cmd.Parameters.Add(param); SaveDataConnect.Open(); System.Data.SqlClient.SqlDataReader reader = cmd.ExecuteReader(); try { reader.Read(); if (string.IsNullOrEmpty(reader["TPSC"].ToString())) return; MemoryStream ms = new MemoryStream((byte[])reader["TPSC"]); System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true); this.pictureBox1.Image = image; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { SaveDataConnect.Close(); } } private void F_HJWF_UploadImg_Load(object sender, EventArgs e) { show(); } private void button3_Click(object sender, EventArgs e) { Close(); } //private void Form1_Load(object sender, EventArgs e) //{ // // TODO: 这行代码将数据加载到表“myPhotoDataSet.Photo”中。您可以根据需要移动或移除它。 // this.photoTableAdapter.Fill(this.myPhotoDataSet.Photo); //} } }
小问题
能让在picturebox中的图片大小随picturebox的大小变化吗?
把PictureBox的SizeMode设为 StretchImage 就可以让图片随PictureBox Resize了。
gridview中添加按钮
private void dataGridView2_CellEnter(object sender, DataGridViewCellEventArgs e) { this.dataGridView2.Controls.Clear();//移除所有控件 if (e.ColumnIndex.Equals(this.dataGridView2.Columns["上传图片"].Index)) //判断单元格是否是"Company"列? { System.Windows.Forms.Button btn = new System.Windows.Forms.Button();//创建Buttonbtn btn.Text = "上传";//设置button文字 btn.Font = new System.Drawing.Font("Arial", 7);//设置文字格式 btn.Visible = true;//设置控件允许显示 btn.Width = this.dataGridView2.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Width;//获取单元格高并设置为btn的宽 btn.Height = this.dataGridView2.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Height;//获取单元格高并设置为btn的高 string DJBH = dataGridView2.Rows[e.RowIndex].Cells["ID"].Value.ToString(); label31.Text = DJBH; btn.Click += new EventHandler(btn_Click);//为btn添加单击事件 this.dataGridView2.Controls.Add(btn);//dataGridView2中添加控件btn btn.Location = new System.Drawing.Point(((this.dataGridView2.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Right) - (btn.Width)), this.dataGridView2.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Y);//设置btn显示位置 } } void btn_Click(object sender, EventArgs e) { F_HJWF_UploadImg f = new F_HJWF_UploadImg(label31.Text); f.ShowDialog(); }