/******************************************************************************* * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential * 类的信息: * 1.程序名称:F_PM_0905.cs * 2.功能描述:新建半成品检验-新建、编辑 * 编辑履历: * 作者 日期 版本 修改内容 * 王鑫 2014/10/06 1.00 新建 *******************************************************************************/ using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; using System.Windows.Forms; using Dongke.IBOSS.PRD.Basics.BaseControls; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Client.CommonModule; using Dongke.IBOSS.PRD.WCF.Proxys; namespace Dongke.IBOSS.PRD.Client.PMModule { /// /// 新建半成品检验-新建、编辑 /// public partial class F_PM_0905 : FormBase { #region 成员变量 // 当前操作数据表 private DataTable _dtBarCode = null; // 当前产品条码 private string _barcode; // 当前产品ID private int _goodsID = 0; // 当前工序ID private int _procedureID = 0; // 当前是否为编辑 true private bool _isEdit = false; // 临时数 private int _tempcount = 0; // 调用实例对象 F_PM_0903 _frm0903 = null; // 员工数据集 private DataSet _dsStaff = null; // 图片数据集 private DataSet _dsImage = null; // 生产数据ID private int _productionDataID = 0; // 图片字节集 private List _PicByte = new List(); // 缩略图片字节集 private List _smallByte = new List(); // 行索引 private int _rowIndex = 0; // 当前缺陷编码 private string _currentDutyCode = ""; // 当前缺陷位置编码 private string _currentDefectPositionCode = ""; // 当前缺陷责任工序编码 private string _currentDefectProcedureCode = ""; // 当前缺陷工号编码 private string _currentDefectUserCode = ""; // 当前缺陷工号ID private int _currentDefectUserID = 0; #endregion #region 构造函数 public F_PM_0905() { InitializeComponent(); } /// /// /// /// 当前操作的数据表 /// 当前产品条码 /// 当前产品ID /// 当前累加数,防止重复 /// 当前工序 /// 当前窗体名称 /// false 新建 true编辑 /// 调用实例对象 /// 员工数据集 /// 图片数据集 /// 原图字节数组 /// 缩略图字节数组 /// 编辑行号标识 public F_PM_0905(DataTable dtBarCode , string barcode , int goodsID , int tempcount , int procedureID , string titleText , bool isEdit , F_PM_0903 frm0903 , DataSet dsStaff , DataSet dsImage , List picByte , List smallByte , int rowIndex) { InitializeComponent(); this.Text = titleText; this._dtBarCode = dtBarCode; this._barcode = barcode; this._goodsID = goodsID; this._procedureID = procedureID; this._isEdit = isEdit; this._tempcount = tempcount; this._frm0903 = frm0903; this._dsStaff = dsStaff; this._dsImage = dsImage; this._rowIndex = rowIndex; this.btnSave.Text = ButtonText.BTN_SAVE; this.btnCancel.Text = ButtonText.BTN_CLOSE; this.btnUpload.Text = ButtonText.BTN_UPLOAD; this.btnDelete.Text = ButtonText.BTN_DELETE; } #endregion #region 事件 private void F_PM_0905_Load(object sender, EventArgs e) { DataSet dsDefectByProcedure = (DataSet)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.GetDefectByProcedure(this._procedureID); })); if (dsDefectByProcedure != null && dsDefectByProcedure.Tables.Count > Constant.INT_IS_ZERO && dsDefectByProcedure.Tables[0].Rows.Count > Constant.INT_IS_ZERO) { this.dropDuty.DisplayMember = "DEFECTFLAGNAME"; this.dropDuty.ValueMember = "DEFECTFLAGID"; this.dropDuty.DataSource = dsDefectByProcedure.Tables[0]; } else { this.dropDuty.DisplayMember = "DEFECTFLAGNAME"; this.dropDuty.ValueMember = "DEFECTFLAGID"; this.dropDuty.DataSource = GetDuty(); } // 缺陷位置 DataSet dsDefectLocation = (DataSet)DoAsync(new BaseAsyncMethod(() => { return PMModuleProxy.Service.GetDefectLocaionByGoodsID(this._goodsID); })); this.dropDefectLocation.DisplayMember = "DEFECTPOSITIONCODEANDNAME"; this.dropDefectLocation.ValueMember = "DEFECTPOSITIONID"; this.dropDefectLocation.DataSource = dsDefectLocation.Tables[0]; //// 缺陷扣罚 //DataSet dsDefectFine = (DataSet)DoAsync(new BaseAsyncMethod(() => //{ // return SystemModuleProxy.Service.GetDictionaryData(0, "ASE002"); //})); //DataRow dr = dsDefectFine.Tables[0].NewRow(); //dr["DictionaryID"] = -1; //dr["DictionaryValue"] = ""; //dsDefectFine.Tables[0].Rows.InsertAt(dr, 0); //dsDefectFine.Tables[0].AcceptChanges(); //this.cmbDefectFine.DisplayMember = "DictionaryValue"; //this.cmbDefectFine.ValueMember = "DictionaryID"; //this.cmbDefectFine.DataSource = dsDefectFine.Tables[0]; DataSet dsResultAccount = (DataSet)DoAsync(new BaseAsyncMethod(() => { return SystemModuleProxy.Service.GetAllDefectFine(); })); if (dsResultAccount != null && dsResultAccount.Tables[0].Rows.Count > 0) { DataView dv = dsResultAccount.Tables[0].DefaultView; dv.RowFilter = "valueflag=1"; this.cmbDefectFine.DisplayMember = "DefectFineCode"; this.cmbDefectFine.ValueMember = "DefectFineID"; DataTable dtNew = dv.ToTable(); DataRow dr = dtNew.NewRow(); dr["DefectFineID"] = -1; dr["DefectFineCode"] = ""; dtNew.Rows.InsertAt(dr, 0); dtNew.AcceptChanges(); this.cmbDefectFine.DisplayMember = "DefectFineCode"; this.cmbDefectFine.ValueMember = "DefectFineID"; this.cmbDefectFine.DataSource = dtNew; } if (this._isEdit) { this.dropDuty.SelectedValue = this._dtBarCode.Rows[this._rowIndex]["DefectID"].ToString(); this._currentDutyCode = this._dtBarCode.Rows[this._rowIndex]["DefectCode"].ToString(); // 缺陷位置 this.dropDefectLocation.SelectedValue = this._dtBarCode.Rows[this._rowIndex]["DefectPositionID"].ToString(); this._currentDefectPositionCode = this._dtBarCode.Rows[this._rowIndex]["DefectPositionCode"].ToString(); this.txtRemarks.Text = this._dtBarCode.Rows[this._rowIndex]["DefectRemarks"].ToString(); BindByteImage(this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount.ToString())]); if (this._dtBarCode.Rows[this._rowIndex]["DefectFineID"].ToString() != "-1") { this.cmbDefectFine.SelectedValue = this._dtBarCode.Rows[this._rowIndex]["DefectFineID"].ToString(); } } } /// /// 缺陷验证事件 /// /// /// private void dropDuty_Validating(object sender, System.ComponentModel.CancelEventArgs e) { if (this.dropDuty.SelectedValue.ToString() != string.Empty) { string DutyValue = this.dropDuty.SelectedValue.ToString(); DataTable dtDuty = this.dropDuty.DataSource as DataTable; if (dtDuty.Rows.Count > Constant.INT_IS_ZERO) { DataRow[] dr = dtDuty.Select("DefectFlagID=" + DutyValue); if (dr.Length > Constant.INT_IS_ZERO) { this._currentDutyCode = dr[0]["DefectCode"].ToString(); } } } } /// /// 保存按钮事件 /// /// /// private void btnSave_Click(object sender, EventArgs e) { if (this.dropDuty.SelectedValue == null || this.dropDuty.SelectedValue.ToString() == string.Empty) { MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "缺陷"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (this.dropDefectLocation.SelectedValue == null || this.dropDefectLocation.SelectedValue.ToString() == string.Empty) { MessageBox.Show(string.Format(Messages.MSG_CMN_W005, "缺陷位置"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (!this._isEdit) { // 每次添加不能重复 if (this._dtBarCode != null && this._dtBarCode.Rows.Count > Constant.INT_IS_ZERO) { DataRow[] drExist = this._dtBarCode.Select( string.Format("DefectID={0} and DefectPositionID={1}", this.dropDuty.SelectedValue.ToString() == string.Empty ? 0 : this.dropDuty.SelectedValue, this.dropDefectLocation.SelectedValue.ToString() == string.Empty ? 0 : this.dropDefectLocation.SelectedValue ) ); if (drExist.Length > Constant.INT_IS_ZERO) { // 提示信息 MessageBox.Show(Messages.MSG_PM_W001, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } DataRow dr = this._dtBarCode.NewRow(); dr["BarCode"] = this._dtBarCode; dr["discarde"] = 0; dr["DefectID"] = this.dropDuty.SelectedValue.ToString() == string.Empty ? 0 : this.dropDuty.SelectedValue; dr["DefectName"] = this.dropDuty.Text; dr["DefectCode"] = this._currentDutyCode; dr["DefectPositionID"] = this.dropDefectLocation.SelectedValue.ToString() == string.Empty ? 0 : this.dropDefectLocation.SelectedValue; dr["DefectPositionName"] = this.dropDefectLocation.Text; dr["DefectPositionCode"] = this._currentDefectPositionCode; dr["DefectProcedureID"] = DBNull.Value; dr["DefectProcedureName"] = DBNull.Value; dr["DefectProcedureCode"] = DBNull.Value; dr["DefectUserID"] = DBNull.Value; dr["DefectUserName"] = DBNull.Value; dr["DefectUserCode"] = DBNull.Value; dr["Jobs"] = DBNull.Value; dr["JobsText"] = DBNull.Value; dr["DefectRemarks"] = this.txtRemarks.Text; dr["TempCount"] = this._tempcount; dr["ProductionDataID"] = this._productionDataID; if (this.cmbDefectFine.SelectedValue != null && this.cmbDefectFine.SelectedValue.ToString() != "-1") { dr["DefectFineID"] = this.cmbDefectFine.SelectedValue; dr["DefectFineValue"] = this.cmbDefectFine.Text; ; } else { dr["DefectFineID"] = -1; dr["DefectFineValue"] = string.Empty; } this._dtBarCode.Rows.Add(dr); } else { if (this._dtBarCode != null && this._dtBarCode.Rows.Count > Constant.INT_IS_ZERO) { int currentRowIndex = -1; // 用来匹配是否编辑自己 for (int i = 0; i < this._dtBarCode.Rows.Count; i++) { if (Convert.ToInt32(this._dtBarCode.Rows[i]["DefectID"]) == (this.dropDuty.SelectedValue.ToString() == string.Empty ? 0 : Convert.ToInt32(this.dropDuty.SelectedValue)) && Convert.ToInt32(this._dtBarCode.Rows[i]["DefectPositionID"]) == (this.dropDefectLocation.SelectedValue.ToString() == string.Empty ? 0 : Convert.ToInt32(this.dropDefectLocation.SelectedValue)) ) { currentRowIndex = i; break; } } if (currentRowIndex != -Constant.INT_IS_ONE && currentRowIndex != this._rowIndex) // 更新后会有重复 { // 提示信息 MessageBox.Show(Messages.MSG_PM_W001, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } this._dtBarCode.Rows[this._rowIndex]["BarCode"] = this._dtBarCode; this._dtBarCode.Rows[this._rowIndex]["discarde"] = 0; this._dtBarCode.Rows[this._rowIndex]["DefectID"] = this.dropDuty.SelectedValue.ToString() == string.Empty ? 0 : this.dropDuty.SelectedValue; this._dtBarCode.Rows[this._rowIndex]["DefectName"] = this.dropDuty.Text; this._dtBarCode.Rows[this._rowIndex]["DefectCode"] = this._currentDutyCode; this._dtBarCode.Rows[this._rowIndex]["DefectPositionID"] = this.dropDefectLocation.SelectedValue.ToString() == string.Empty ? 0 : this.dropDefectLocation.SelectedValue; this._dtBarCode.Rows[this._rowIndex]["DefectPositionName"] = this.dropDefectLocation.Text; this._dtBarCode.Rows[this._rowIndex]["DefectPositionCode"] = this._currentDefectPositionCode; this._dtBarCode.Rows[this._rowIndex]["DefectProcedureID"] = DBNull.Value; this._dtBarCode.Rows[this._rowIndex]["DefectProcedureName"] = DBNull.Value; this._dtBarCode.Rows[this._rowIndex]["DefectProcedureCode"] = DBNull.Value; this._dtBarCode.Rows[this._rowIndex]["DefectUserID"] = DBNull.Value; this._dtBarCode.Rows[this._rowIndex]["DefectUserName"] = DBNull.Value; this._dtBarCode.Rows[this._rowIndex]["DefectUserCode"] = DBNull.Value; this._dtBarCode.Rows[this._rowIndex]["Jobs"] = DBNull.Value; this._dtBarCode.Rows[this._rowIndex]["JobsText"] = DBNull.Value; this._dtBarCode.Rows[this._rowIndex]["DefectRemarks"] = this.txtRemarks.Text; this._dtBarCode.Rows[this._rowIndex]["TempCount"] = this._tempcount; this._dtBarCode.Rows[this._rowIndex]["ProductionDataID"] = this._productionDataID; if (this.cmbDefectFine.SelectedValue != null && this.cmbDefectFine.SelectedValue.ToString() != "-1") { this._dtBarCode.Rows[this._rowIndex]["DefectFineID"] = this.cmbDefectFine.SelectedValue; this._dtBarCode.Rows[this._rowIndex]["DefectFineValue"] = this.cmbDefectFine.Text; ; } else { this._dtBarCode.Rows[this._rowIndex]["DefectFineID"] = -1; this._dtBarCode.Rows[this._rowIndex]["DefectFineValue"] = string.Empty; } this._dtBarCode.AcceptChanges(); } // 防止工种不选择的话,直接New一个 if (!this._dsStaff.Tables.Contains(string.Format("TempTable{0}", _tempcount.ToString()))) { DataTable dtStaff = new DataTable(string.Format("TempTable{0}", _tempcount.ToString())); dtStaff.Columns.Add("IsSelected"); dtStaff.Columns.Add("StaffID"); dtStaff.Columns.Add("StaffCode"); dtStaff.Columns.Add("StaffName"); dtStaff.Columns.Add("StaffTempCount"); dtStaff.Columns.Add("StaffStatus"); dtStaff.Columns.Add("Jobs"); this._dsStaff.Tables.Add(dtStaff); } if (!this._dsImage.Tables.Contains(string.Format("TempTable{0}", this._tempcount.ToString()))) { DataTable dtImage = new DataTable(string.Format("TempTable{0}", this._tempcount.ToString())); dtImage.Columns.Add("StaffTempCount"); dtImage.Columns.Add("ImageByte", typeof(byte[])); dtImage.Columns.Add("OrgImageByte", typeof(byte[])); this._dsImage.Tables.Add(dtImage); } this._frm0903.BindByteImage(this._dsImage.Tables[string.Format("TempTable{0}", _tempcount.ToString())]); this._tempcount = _tempcount + 1; this._frm0903.SetDataSource(_tempcount); ClearText(); if (this._isEdit) { // 保存后如果是编辑进来的,更改后可以继续录入,当前改为插入了 this._isEdit = false; } } /// /// 上传图片按钮事件 /// /// /// private void btnUpload_Click(object sender, EventArgs e) { try { if (!this._dsImage.Tables.Contains(string.Format("TempTable{0}", this._tempcount.ToString()))) { DataTable dtImage = new DataTable(string.Format("TempTable{0}", this._tempcount.ToString())); dtImage.Columns.Add("StaffTempCount"); dtImage.Columns.Add("ImageByte", typeof(byte[])); dtImage.Columns.Add("OrgImageByte", typeof(byte[])); this._dsImage.Tables.Add(dtImage); } this.odlgFile.Filter = Constant.FILTER_PIC; this.odlgFile.FilterIndex = Constant.INT_IS_ZERO; this.odlgFile.RestoreDirectory = true; this.odlgFile.Title = "选择缺陷图片"; this.odlgFile.FileName = null; this.odlgFile.RestoreDirectory = true; if (this.odlgFile.ShowDialog() == DialogResult.OK) { FileInfo file = new FileInfo(odlgFile.FileName); if (Constant.UPLOAD_PIC_MAX_SIZE < file.Length) { MessageBox.Show(string.Format(Messages.MSG_CMN_W013, "缺陷图片", "大小", "1M"), this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } else { Image PicImage = Image.FromStream(file.OpenRead()); byte[] orgImageByte = ImageToByte(PicImage); this._PicByte.Add(orgImageByte); GetThumbnail(file, orgImageByte); BindImg(); } } } catch (Exception ex) { // 对异常进行共通处理 ExceptionManager.HandleEventException(this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, this.Text, ex); } } /// /// 删除图片按钮事件 /// /// /// private void btnDelete_Click(object sender, EventArgs e) { foreach (ListViewItem lvSelect in lvPic.SelectedItems) { int index = lvSelect.Index; if (index < Constant.INT_IS_ZERO) { index = Constant.INT_IS_ZERO; } this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)].Rows.RemoveAt(lvSelect.Index); this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)].AcceptChanges(); this._frm0903.BindByteImage(this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)]); this.BindByteImage(this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)]); } } /// /// 缺陷位置验证事件 /// /// /// private void dropDefectLocation_Validating(object sender, System.ComponentModel.CancelEventArgs e) { if (this.dropDefectLocation.SelectedValue != null && this.dropDefectLocation.SelectedValue.ToString() != string.Empty) { string DefectLocationCode = this.dropDefectLocation.SelectedValue.ToString(); DataTable dtDefectLocationCode = this.dropDefectLocation.DataSource as DataTable; if (dtDefectLocationCode.Rows.Count > Constant.INT_IS_ZERO) { DataRow[] dr = dtDefectLocationCode.Select("DefectPositionID=" + DefectLocationCode); if (dr.Length > Constant.INT_IS_ZERO) { this._currentDefectPositionCode = dr[0]["DefectPositionCode"].ToString(); } } } } #endregion #region 私有方法 /// /// 获取缺陷 /// /// private DataTable GetDuty() { DataTable dtDuty = new DataTable(); dtDuty.Columns.Add("DEFECTFLAGNAME"); dtDuty.Columns.Add("DEFECTFLAGID"); return dtDuty; } /// /// 责任工序数据表 /// /// private DataTable GetDutyProcedure() { DataTable dtDutyProcedure = new DataTable(); dtDutyProcedure.Columns.Add("DutyProcedureName"); dtDutyProcedure.Columns.Add("DutyProcedureID"); return dtDutyProcedure; } /// /// 责任工号数据表 /// /// private DataTable GetDutyProcedureUser() { DataTable dtDutyProcedureUser = new DataTable(); dtDutyProcedureUser.Columns.Add("UserCode"); dtDutyProcedureUser.Columns.Add("UserID"); return dtDutyProcedureUser; } /// /// 责任工种数据表 /// /// private DataTable GetDutyProcedureJobs() { DataTable dtDutyProcedureJobs = new DataTable(); dtDutyProcedureJobs.Columns.Add("JobsName"); dtDutyProcedureJobs.Columns.Add("Jobs"); return dtDutyProcedureJobs; } /// /// 获取缺陷扣罚 /// /// private DataTable GetDefectFine() { DataTable dtDefectFine = new DataTable(); dtDefectFine.Columns.Add("DictionaryValue"); dtDefectFine.Columns.Add("DictionaryID"); return dtDefectFine; } /// /// 保存后界面数据初始化 /// private void ClearText() { this.dropDuty.SelectedValue = string.Empty; this.dropDuty.Text = string.Empty; this.dropDefectLocation.SelectedValue = string.Empty; this.dropDefectLocation.Text = string.Empty; this.txtRemarks.Text = string.Empty; this._smallByte.Clear(); this.lvPic.Clear(); this.cmbDefectFine.SelectedValue = -1; } /// /// 将图片文件转换成二进制 /// /// /// public static byte[] ImageToByte(Image img) { byte[] smallbuffer = null; using (MemoryStream ms = new MemoryStream()) { img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); ms.Position = Constant.INT_IS_ZERO; smallbuffer = new byte[ms.Length]; ms.Read(smallbuffer, Constant.INT_IS_ZERO, Convert.ToInt32(ms.Length)); ms.Flush(); } return smallbuffer; } /// /// 重绘缩略图并把缩略图转为二进制储存 /// /// 图片源路径 /// 缩放后图片高度 /// 缩放后图片宽度 /// public void GetThumbnail(FileInfo sourceFile, byte[] orgImageByte) { Image imgSource = Image.FromStream(sourceFile.OpenRead()); ImageFormat thisFormat = imgSource.RawFormat; int sW = 0, sH = 0; // 按比例缩放 int sWidth = imgSource.Width; int sHeight = imgSource.Height; int destWidth = 100; int destHeight = getSmallImageHeight(sWidth, sHeight, destWidth); if (sHeight > destHeight || sWidth > destWidth) { if ((sWidth * destHeight) > (sHeight * destWidth)) { sW = destWidth; sH = (destWidth * sHeight) / sWidth; } else { sH = destHeight; sW = (sWidth * destHeight) / sHeight; } } else { sW = sWidth; sH = sHeight; } Bitmap outBmp = new Bitmap(destWidth, destHeight); Graphics g = Graphics.FromImage(outBmp); g.Clear(Color.Black); // 设置画布的描绘质量 g.CompositingQuality = CompositingQuality.HighQuality; g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.DrawImage(imgSource, new Rectangle((destWidth - sW) / 2, (destHeight - sH) / 2, sW, sH), 0, 0, imgSource.Width, imgSource.Height, GraphicsUnit.Pixel); g.Dispose(); //将重绘的图片转为二进制并保存 Image image = (Image)outBmp; byte[] smallbuffer = ImageToByte(image); DataRow dr = this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)].NewRow(); dr["StaffTempCount"] = this._tempcount; dr["ImageByte"] = smallbuffer; dr["OrgImageByte"] = orgImageByte; this._dsImage.Tables[string.Format("TempTable{0}", this._tempcount)].Rows.Add(dr); _smallByte.Add(smallbuffer); imgSource.Dispose(); outBmp.Dispose(); } /// /// 根据原图片宽高比获取缩略图的高(根据宽) /// /// /// /// /// protected int getSmallImageHeight(int BigWidth, int BigHeight, int SmallWidth) { decimal scale = Convert.ToDecimal(BigWidth) / Convert.ToDecimal(BigHeight); return Convert.ToInt32(SmallWidth / scale); } /// /// 绑定缩略图到控件中 /// protected void BindImg() { ImageList ilPic = new ImageList(); //每次绑定要清空数据源 ilPic.Images.Clear(); //将缩略图二进制集合中的数据转换成图片文件 List LSImageList = new List(); foreach (byte[] smallby in _smallByte) { LSImageList.Add(byteArrayToImage(smallby)); } //添加数据源 foreach (Image img in LSImageList) { ilPic.Images.Add(img); } ilPic.ImageSize = new Size(100, 100); this.lvPic.LargeImageList = ilPic; this.lvPic.BeginUpdate(); //清空列表的数据源 lvPic.Items.Clear(); //添加列表的数据源 for (int i = 0; i < ilPic.Images.Count; i++) { ListViewItem lvi = new ListViewItem(); lvi.ImageIndex = i; this.lvPic.Items.Add(lvi); } this.lvPic.EndUpdate(); } /// /// 将数据库中的二进制转换成图片 /// /// /// public static Image byteArrayToImage(object data) { System.IO.MemoryStream ms = new System.IO.MemoryStream((byte[])data); System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms); return returnImage; } /// /// 绑定并显示图片 /// /// private void BindByteImage(DataTable ImageData) { this._smallByte.Clear(); foreach (DataRow dr in ImageData.Rows) { //将数据库中的缩略图取出 this._smallByte.Add((byte[])dr[1]); } //绑定缩略图 BindImg(); } #endregion } }