在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
通用权限管理系统组件源码里,有职员管理的功能,实现了直接可以把照片拖拽过来的功能,用起来会很方便。 管理软件能支持拖拽功能,会好用很多,用户体验也会改善很多。想做好一个组件需要把放放面面都彻底做好才可以。
想要控件支持拖拽,需要设置 AllowDrop 属性。
还需要写下面的2个事件。
参考代码如下,有需要的可以参考一下,把有需要的代码参考一下就可以了。
代码
//-----------------------------------------------------------
// All Rights Reserved , Copyright (C) 2010 ,Jirisoft , Ltd . //----------------------------------------------------------- using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using System.IO; namespace DotNet.WinForm.File { using DotNet.Model; using DotNet.Utilities; using DotNet.Service; /// <summary> /// UCPicture /// 照片显示控件 /// /// 修改纪录 /// /// 2010.12.08 版本:2.0 JiRiGaLa 更新员工更新照片的错误。 /// 2008.04.29 版本:1.0 JiRiGaLa 创建。 /// /// 版本:2.0 /// /// <author> /// <name>JiRiGaLa</name> /// <date>2010.12.08</date> /// </author> /// </summary> public partial class UCPicture : UserControl { public UCPicture() { InitializeComponent(); } private BaseUserInfo userInfo = new BaseUserInfo(); /// <summary> /// 当前操作员信息 /// </summary> public BaseUserInfo UserInfo { get { userInfo = new BaseUserInfo(); userInfo.GetUserInfo(); return userInfo; } set { userInfo = value; } } /// <summary> /// 保存到数据库 /// </summary> public bool FromDatabase = true; private string fileId = string.Empty; public string FileId { get { return this.fileId; } set { this.fileId = value; this.ShowPicture(); } } private string folderId = string.Empty; public string FolderID { get { return this.folderId; } set { this.folderId = value; } } private void UCPicture_Load(object sender, EventArgs e) { // 设置按钮状态 // this.SetControlState(); } private void UCPicture_DragOver(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Move; } } private void UCPicture_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] file = (string[])e.Data.GetData(DataFormats.FileDrop); for (int i = 0; i <= file.Length - 1; i++) { if (System.IO.File.Exists(file[i])) { this.fileId = string.Empty; // 设置显示的图片 this.pic.ImageLocation = file[i]; // 设置按钮状态 this.SetControlState(); break; } } } } /// <summary> /// 显示图片 /// </summary> public void ShowPicture() { if (!String.IsNullOrEmpty(this.FileId)) { // 显示图片 this.ShowPicture(this.FileId); } else { // 清除图片 this.ClearPicture(); } } /// <summary> /// 显示图片 /// </summary> /// <param name="id">主键</param> private void ShowPicture(string id) { if (!this.FromDatabase) { this.pic.ImageLocation = BaseSystemInfo.StartupPath + id; } else { byte[] fileContent = null; fileContent = this.Download(id); if (fileContent != null) { // this.pic.Image = this.ByteToImage(fileContent); MemoryStream memoryStream = new MemoryStream(fileContent); Bitmap bitmap = new Bitmap(memoryStream); this.pic.Image = bitmap; } else { this.FileId = string.Empty; this.ClearPicture(); } } // 设置按钮状态 this.SetControlState(); } /// <summary> /// 从数据库中读取文件 /// </summary> /// <param name="id">文件主键</param> /// <returns>文件</returns> public byte[] Download(string id) { return ServiceManager.Instance.FileService.Download(UserInfo, id); // OleDbHelper dbHelper = new SqlHelper(); // dbHelper.Open(); // byte[] fileContent = null; // string sqlQuery = " SELECT " + BaseFileTable.FieldFileContent // + " FROM " + BaseFileTable.TableName // + " WHERE " + BaseFileTable.FieldId + " = '" + Id + "'"; // OleDbDataReader dataReader = (OleDbDataReader)dbHelper.ExecuteReader(sqlQuery); // if (dataReader.Read()) // { // fileContent = (byte[])dataReader[BaseFileTable.FieldFileContent]; // } // dbHelper.Close(); // return fileContent; } public string Upload(string folderId, string categoryId) { this.FolderID = folderId; string returnValue = string.Empty; if (!String.IsNullOrEmpty(this.pic.ImageLocation)) { // 保存到数据库 if (this.FromDatabase) { if (String.IsNullOrEmpty(this.FileId)) { returnValue = ServiceManager.Instance.FileService.Upload(UserInfo, folderId, Path.GetFileName(this.pic.ImageLocation), FileUtil.GetFile(this.pic.ImageLocation), true); } else { string statusCode = string.Empty; string statusMessage = string.Empty; ServiceManager.Instance.FileService.UpdateFile(UserInfo, this.FileId, Path.GetFileName(this.pic.ImageLocation), FileUtil.GetFile(this.pic.ImageLocation), out statusCode, out statusMessage); returnValue = this.FileId; } } else { // 复制文件到指定的目录里 if (!this.pic.ImageLocation.Equals(BaseSystemInfo.StartupPath + this.FileId)) { string destDirectory = BaseSystemInfo.StartupPath + "\\UploadFiles" + "\\" + folderId + "\\" + categoryId; System.IO.Directory.CreateDirectory(destDirectory); string destFileName = destDirectory + "\\" + Path.GetFileName(this.pic.ImageLocation); System.IO.File.Copy(this.pic.ImageLocation, destFileName); returnValue = "\\UploadFiles" + "\\" + folderId + "\\" + categoryId + "\\" + Path.GetFileName(this.pic.ImageLocation); } } // OleDbHelper dbHelper = new SqlHelper(); // dbHelper.Open(); // string sequence = BaseSequenceManager.Instance.GetSequence(DbHelper, BaseFileTable.TableName); // OleDbSQLBuilder sqlBuilder = new OleDbSQLBuilder(); // sqlBuilder.BeginInsert(DbHelper, BaseFileTable.TableName); // sqlBuilder.SetValue(BaseFileTable.FieldId, sequence); // sqlBuilder.SetValue(BaseFileTable.FieldFolderId, folderId); // sqlBuilder.SetValue(BaseFileTable.FieldFileName, Path.GetFileName(this.pic.ImageLocation)); // // byte[] File = this.ImageToByte(this.pic.Image); // byte[] File = this.GetFile(this.pic.ImageLocation); // sqlBuilder.SetValue(BaseFileTable.FieldFileContent, File); // sqlBuilder.SetValue(BaseFileTable.FieldFileSize, File.Length); // sqlBuilder.SetValue(BaseFileTable.FieldCreateUserId, UserInfo.Id); // sqlBuilder.SetDBNow(BaseFileTable.FieldCreateDate); // sqlBuilder.EndInsert(); // dbHelper.Close(); // returnValue = sequence; } return returnValue; } private void SetControlState(bool enabled) { this.btnSelect.Enabled = enabled; this.btnClear.Enabled = enabled; this.btnDelete.Enabled = enabled; } #region private void SetControlState() 设置按钮状态 /// <summary> /// 设置按钮状态 /// </summary> private void SetControlState() { this.btnSelect.Enabled = true; // 是从数据库里面读取出来的 if (!String.IsNullOrEmpty(this.FileId) && (String.IsNullOrEmpty(this.pic.ImageLocation) || !this.FromDatabase)) { this.btnDelete.Enabled = true; } else { this.btnDelete.Enabled = false; } // 清除按钮 this.btnClear.Enabled = false; if (!String.IsNullOrEmpty(this.pic.ImageLocation)) { if (this.FromDatabase) { this.btnClear.Enabled = true; this.btnDelete.Enabled = false; } else { if (!this.pic.ImageLocation.Equals(BaseSystemInfo.StartupPath + this.FileId)) { this.btnClear.Enabled = true; this.btnDelete.Enabled = false; } } } } #endregion private void pic_DoubleClick(object sender, EventArgs e) { if (this.pic.Image != null) { FrmPicture frmPicture = new FrmPicture(this.FileId); frmPicture.SetImage(this.pic.Image); frmPicture.Show(); } } private void btnSelect_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); // OpenFileDialog.InitialDirectory = Application.StartupPath; openFileDialog.Filter = "位图文件(*.bmp)|*.bmp|JPEG(*.JPG;*.JPEG;*.JPE;*.JFIF)|*.JPG;*.JPEG;*.JPE;*.JFIF|GIF(*.GIF)|*.GIF|TIFF(*.TIF;*.TIIF)|*.TIF;*.TIIF|PNG(*.PNG)|*.PNG|ICO(*.ICO)|*.ICO|所有图片文件|(*.bmp;*.JPG;*.JPEG;*.JPE;*.JFIF;*.GIF;*.TIF;*.TIIF;*.PNG;*.ICO)|所有文件|*.*"; openFileDialog.FilterIndex = 7; openFileDialog.RestoreDirectory = true; openFileDialog.Title = "打开图片文件"; if (openFileDialog.ShowDialog() == DialogResult.OK) { this.fileId = string.Empty; this.SetControlState(false); this.pic.ImageLocation = openFileDialog.FileName; // 设置按钮状态 this.SetControlState(); } } /// <summary> /// 清除图片 /// </summary> private void ClearPicture() { this.pic.ImageLocation = string.Empty; this.pic.Image = null; } private void btnClear_Click(object sender, EventArgs e) { this.ClearPicture(); this.ShowPicture(); // 设置按钮状态 this.SetControlState(); } /// <summary> /// 删除文件 /// </summary> /// <param name="id">主键</param> /// <returns>影响的行数</returns> public int DeleteFile(string id) { int returnValue = 0; if (this.FromDatabase) { // 从数据库服务器删除文件 returnValue = ServiceManager.Instance.FileService.Delete(UserInfo, id); } else { // 清除图片 this.ClearPicture(); // 删除文件 System.IO.File.Delete(BaseSystemInfo.StartupPath + this.FileId); } return returnValue; } private void btnDelete_Click(object sender, EventArgs e) { if (MessageBox.Show(AppMessage.MSG0207, AppMessage.MSG0000, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK) { this.SetControlState(false); this 全部评论
专题导读
上一篇:ubuntuc/c++IDE编程环境(转)发布时间:2022-07-14下一篇:探讨C++变量生命周期、栈分配方式、类内存布局、Debug和Release程序的区别(一) ...发布时间:2022-07-14热门推荐
热门话题
阅读排行榜
|
请发表评论