#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;
}
}
}