通用权限管理系统组件源码里,有职员管理的功能,实现了直接可以把照片拖拽过来的功能,用起来会很方便。
管理软件能支持拖拽功能,会好用很多,用户体验也会改善很多。想做好一个组件需要把放放面面都彻底做好才可以。
想要控件支持拖拽,需要设置 AllowDrop 属性。
还需要写下面的2个事件。
参考代码如下,有需要的可以参考一下,把有需要的代码参考一下就可以了。
代码 //-----------------------------------------------------------
//AllRightsReserved,Copyright(C),Jirisoft,Ltd.
//-----------------------------------------------------------
usingSystem;
usingSystem.Collections.Generic;
ponentModel;
usingSystem.Drawing;
usingSystem.Data;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO;
namespaceDotNet.WinForm.File
{
usingDotNet.Model;
usingDotNet.Utilities;
usingDotNet.Service;
///<summary>
///UCPicture
///照片显示控件
///
///修改纪录
///
///.12.08版本:2.0JiRiGaLa更新员工更新照片的错误。
///.04.29版本:1.0JiRiGaLa创建。
///
///版本:2.0
///
///<author>
///<name>JiRiGaLa</name>
///<date>.12.08</date>
///</author>
///</summary>
publicpartialclassUCPicture:UserControl
{
publicUCPicture()
{
InitializeComponent();
}
privateBaseUserInfouserInfo=newBaseUserInfo();
///<summary>
///当前操作员信息
///</summary>
publicBaseUserInfoUserInfo
{
get
{
userInfo=newBaseUserInfo();
userInfo.GetUserInfo();
returnuserInfo;
}
set
{
userInfo=value;
}
}
///<summary>
///保存到数据库
///</summary>
publicboolFromDatabase=true;
privatestringfileId=string.Empty;
publicstringFileId
{
get
{
returnthis.fileId;
}
set
{
this.fileId=value;
this.ShowPicture();
}
}
privatestringfolderId=string.Empty;
publicstringFolderID
{
get
{
returnthis.folderId;
}
set
{
this.folderId=value;
}
}
privatevoidUCPicture_Load(objectsender,EventArgse)
{
//设置按钮状态
//this.SetControlState();
}
privatevoidUCPicture_DragOver(objectsender,DragEventArgse)
{
if(e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect=DragDropEffects.Move;
}
}
privatevoidUCPicture_DragDrop(objectsender,DragEventArgse)
{
if(e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[]file=(string[])e.Data.GetData(DataFormats.FileDrop);
for(inti=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>
publicvoidShowPicture()
{
if(!String.IsNullOrEmpty(this.FileId))
{
//显示图片
this.ShowPicture(this.FileId);
}
else
{
//清除图片
this.ClearPicture();
}
}
///<summary>
///显示图片
///</summary>
///<paramname="id">主键</param>
privatevoidShowPicture(stringid)
{
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);
MemoryStreammemoryStream=newMemoryStream(fileContent);
Bitmapbitmap=newBitmap(memoryStream);
this.pic.Image=bitmap;
}
else
{
this.FileId=string.Empty;
this.ClearPicture();
}
}
//设置按钮状态
this.SetControlState();
}
///<summary>
///从数据库中读取文件
///</summary>
///<paramname="id">文件主键</param>
///<returns>文件</returns>
publicbyte[]Download(stringid)
{
returnServiceManager.Instance.FileService.Download(UserInfo,id);
//OleDbHelperdbHelper=newSqlHelper();
//dbHelper.Open();
//byte[]fileContent=null;
//stringsqlQuery="SELECT"+BaseFileTable.FieldFileContent
//+"FROM"+BaseFileTable.TableName
//+"WHERE"+BaseFileTable.FieldId+"='"+Id+"'";
//OleDbDataReaderdataReader=(OleDbDataReader)dbHelper.ExecuteReader(sqlQuery);
//if(dataReader.Read())
//{
//fileContent=(byte[])dataReader[BaseFileTable.FieldFileContent];
//}
//dbHelper.Close();
//returnfileContent;
}
publicstringUpload(stringfolderId,stringcategoryId)
{
this.FolderID=folderId;
stringreturnValue=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
{
stringstatusCode=string.Empty;
stringstatusMessage=string.Empty;
ServiceManager.Instance.FileService.UpdateFile(UserInfo,this.FileId,Path.GetFileName(this.pic.ImageLocation),FileUtil.GetFile(this.pic.ImageLocation),outstatusCode,outstatusMessage);
returnValue=this.FileId;
}
}
else
{
//复制文件到指定的目录里
if(!this.pic.ImageLocation.Equals(BaseSystemInfo.StartupPath+this.FileId))
{
stringdestDirectory=BaseSystemInfo.StartupPath+"\\UploadFiles"+"\\"+folderId+"\\"+categoryId;
System.IO.Directory.CreateDirectory(destDirectory);
stringdestFileName=destDirectory+"\\"+Path.GetFileName(this.pic.ImageLocation);
System.IO.File.Copy(this.pic.ImageLocation,destFileName);
returnValue="\\UploadFiles"+"\\"+folderId+"\\"+categoryId+"\\"+Path.GetFileName(this.pic.ImageLocation);
}
}
//OleDbHelperdbHelper=newSqlHelper();
//dbHelper.Open();
//stringsequence=BaseSequenceManager.Instance.GetSequence(DbHelper,BaseFileTable.TableName);
//OleDbSQLBuildersqlBuilder=newOleDbSQLBuilder();
//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;
}
returnreturnValue;
}
privatevoidSetControlState(boolenabled)
{
this.btnSelect.Enabled=enabled;
this.btnClear.Enabled=enabled;
this.btnDelete.Enabled=enabled;
}
#regionprivatevoidSetControlState()设置按钮状态
///<summary>
///设置按钮状态
///</summary>
privatevoidSetControlState()
{
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
privatevoidpic_DoubleClick(objectsender,EventArgse)
{
if(this.pic.Image!=null)
{
FrmPicturefrmPicture=newFrmPicture(this.FileId);
frmPicture.SetImage(this.pic.Image);
frmPicture.Show();
}
}
privatevoidbtnSelect_Click(objectsender,EventArgse)
{
OpenFileDialogopenFileDialog=newOpenFileDialog();
//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>
privatevoidClearPicture()
{
this.pic.ImageLocation=string.Empty;
this.pic.Image=null;
}
privatevoidbtnClear_Click(objectsender,EventArgse)
{
this.ClearPicture();
this.ShowPicture();
//设置按钮状态
this.SetControlState();
}
///<summary>
///删除文件
///</summary>
///<paramname="id">主键</param>
///<returns>影响的行数</returns>
publicintDeleteFile(stringid)
{
intreturnValue=0;
if(this.FromDatabase)
{
//从数据库服务器删除文件
returnValue=ServiceManager.Instance.FileService.Delete(UserInfo,id);
}
else
{
//清除图片
this.ClearPicture();
//删除文件
System.IO.File.Delete(BaseSystemInfo.StartupPath+this.FileId);
}
returnreturnValue;
}
privatevoidbtnDelete_Click(objectsender,EventArgse)
{
if(MessageBox.Show(AppMessage.MSG0207,AppMessage.MSG0000,MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2)==DialogResult.OK)
{
this.SetControlState(false);
this.DeleteFile(this.FileId);
this.FileId=string.Empty;
this.ShowPicture();
//设置按钮状态
this.SetControlState();
}
}
}
}
将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。 About
吉日嘎拉(蒙古语为吉祥如意),2000年毕业于黑龙江大学计算机系软件专业,目前定居杭州,典型的IT软件土鳖一个,外号“软件包工头”。
通用权限管理系统组件(GPM - General Permissions Manager)自开始发布,目前是国内注册用户和免费盗版用户最多的权限管理系统,是各种信息管理系统开发中彻底的权限解决方案。本组件支持多种主流数据库(Oracle、sqlsever、db2、mysql),功能强大,使用方便,代码简洁,思路严谨,被广大支持者称为权限管理系统中的“走火入魔级权限管理系统”。
精心维护通用权限管理系统组件(GPM - General Permissions Manager)有8年多,3年的不断推广,20万行经典的业务逻辑积累,经过上万次的调试修正,经历了四百个付费客户,上百软件公司的实战开发。
以上开发经验,外企工作5年,上市公司3年,独立经营软件公司2年,主持研发部门管理工作4年以上。
将权限管理、工作流做到我能力的极致,一个人只能做好那么很少的几件事情。
QQ:252056973,Mail:jirigala_bao@
访问者分布
通用权限管理模块的严谨设计定位、精心编码实现、不断维护推广、持续优化改进,主要是为了实现一个可以高度重复利用劳动成果的工具软件并×××给所需的人们,另想成为国人值得骄傲的知名软件功能模块。
可供国内管理类开发人员在日常工作中进行灵活二次开发利用的模块,开发管理类软件的必备工具之一,我们的目标就是让程序员早点儿回家休息。
淘宝店地址: