#region using System; using System.ComponentModel; using System.IO; using System.Windows.Forms; using CSFrameworkV5.Common; using CSFrameworkV5.Core; using CSFrameworkV5.Interfaces; ///*************************************************************************/ ///* ///* 文件名 :ucAttachment.cs ///* 程序说明 : 附件管理自定义控件 ///* 这个控件只是个载体, 具体业务由实现IAttachmentStorage接口的类完成. ///* 原创作者 :www.csframework.com ///* ///* Copyright 2006-2021 C/S框架网 www.csframework.com ///* ///**************************************************************************/ #endregion namespace CSFrameworkV5.Library.UserControls { /// /// 提交附件资料的事件 /// /// 附件资料 public delegate void PostAttachmentData(object data); /// /// 附件管理自定义控件. /// public partial class ucAttachment : UserControl { //是否立即提交数据 private bool _ImmediatelyPost; private PostAttachmentData _OnPostAttachmentData; //附件管理存储策略 private IAttachmentStorage _Storage; public ucAttachment() { InitializeComponent(); } /// /// 即时提交数据 /// [DefaultValue(false)] [Description("即时提交数据")] public bool ImmediatelyPost { get => _ImmediatelyPost; set => _ImmediatelyPost = value; } /// /// 附件管理策略 /// public IAttachmentStorage StorateStrategy { get => _Storage; set => _Storage = value; } private void btnAdd_Click(object sender, EventArgs e) { var dlg = new OpenFileDialog(); if (DialogResult.OK == dlg.ShowDialog()) { //检查文件名是否存在 if (_Storage.Exists(Path.GetFileName(dlg.FileName))) { Msg.Warning("附件已经存在!"); } else { _Storage.AddFile(dlg.FileName); if (_ImmediatelyPost && _OnPostAttachmentData != null) _OnPostAttachmentData(_Storage.AttachmentStorage); } } } private void btnDel_Click(object sender, EventArgs e) { if (gvSummary.IsValidRowHandle(gvSummary.FocusedRowHandle)) { if (Msg.AskQuestion("确定要删除此附件吗?")) { var fileName = gvSummary.GetDataRow(gvSummary.FocusedRowHandle)[ "FileName"].ToStringEx(); _Storage.DeleteFile(fileName); if (_ImmediatelyPost && _OnPostAttachmentData != null) _OnPostAttachmentData(_Storage.AttachmentStorage); } } else { Msg.Warning("请选择一个附件!"); } } private void btnSaveAs_Click(object sender, EventArgs e) { if (gvSummary.IsValidRowHandle(gvSummary.FocusedRowHandle)) { var fileName = gvSummary.GetDataRow(gvSummary.FocusedRowHandle)["FileName"] .ToStringEx(); _Storage.SaveAs(fileName); } else { Msg.Warning("请选择一个附件!"); } } /// /// 绑定表格控件的数据源 /// public void DoBindDataSource() { if (_Storage != null) { gcSummary.DataSource = null; gcSummary.DataSource = _Storage.AttachmentStorage; } } /// /// 取消修改 /// public void DoRejectChanges() { _Storage.AttachmentStorage.RejectChanges(); DoBindDataSource(); } /// /// 设置按钮状态 /// /// 按钮状态 public void DoSetButtonState(UpdateType currentState) { var onEditMode = currentState == UpdateType.Modify || currentState == UpdateType.Add; btnAdd.Enabled = onEditMode; btnDel.Enabled = onEditMode; gvSummary.OptionsBehavior.Editable = onEditMode; menuDrop.Enabled = onEditMode; //删除 //不受状态控制 btnSaveAs.Enabled = true; //另存为 menuOpen.Enabled = true; menuSaveAs.Enabled = true; } private void menuOpen_Click(object sender, EventArgs e) { if (gvSummary.IsValidRowHandle(gvSummary.FocusedRowHandle)) { var fileName = gvSummary.GetDataRow(gvSummary.FocusedRowHandle)["FileName"] .ToStringEx(); _Storage.OpenFile(fileName); } else { Msg.Warning("请选择一个附件!"); } } /// /// 保存附件数据 /// [Description("保存附件数据")] public event PostAttachmentData OnPostAttachmentData { add => _OnPostAttachmentData += value; remove => _OnPostAttachmentData -= value; } private void ucAttachment_Load(object sender, EventArgs e) { // } private void ucAttachment_SizeChanged(object sender, EventArgs e) { colFileTitle.Width = Width - colIconSmall.Width - 15; } } }