#region
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Drawing;
|
using System.Drawing.Printing;
|
using System.IO;
|
using System.Windows.Forms;
|
using CSFrameworkV5.Business;
|
using CSFrameworkV5.Common;
|
using CSFrameworkV5.Core;
|
using CSFrameworkV5.Language;
|
using DevExpress.Utils.Menu;
|
using DevExpress.XtraEditors.Controls;
|
using DevExpress.XtraGrid.Menu;
|
using DevExpress.XtraGrid.Views.Grid;
|
using DevExpress.XtraPrinting;
|
using BorderSide = DevExpress.XtraPrinting.BorderSide;
|
|
#endregion
|
|
namespace CSFrameworkV5.Library
|
{
|
/// <summary>
|
/// DevExpress表格样式配置窗体
|
/// </summary>
|
public partial class frmGridCustomize : Form
|
{
|
/// <summary>
|
/// 当前配置
|
/// </summary>
|
private static GridLayoutConfig _Current;
|
|
/// <summary>
|
/// 所有表格配置
|
/// </summary>
|
private static Hashtable _HashGridConfig;
|
|
private frmGridCustomize()
|
{
|
InitializeComponent();
|
}
|
|
#region 外部调用公开接口
|
|
/// <summary>
|
/// 注册表格
|
/// </summary>
|
/// <param name="view">表格</param>
|
/// <param name="customGridStyle">使用自定义表格样式</param>
|
public static void RegisterGrid(GridView view,
|
bool customGridStyle = true)
|
{
|
var config = new GridLayoutConfig(view, "Default");
|
config.CustomGridStyle = customGridStyle;
|
RegistConfig(config);
|
config.RestoreLayout(); //读取表格配置信息.
|
}
|
|
#endregion
|
|
#region 窗体实例的方法定义
|
|
/// <summary>
|
/// 加载样式表清单
|
/// </summary>
|
/// <param name="current"></param>
|
private void LoadLayoutList(GridLayoutConfig current)
|
{
|
if (current != null)
|
{
|
_Current = current;
|
lbCurrentLayout.Text = current.CurrentLayoutName;
|
}
|
|
//加载样式表
|
list.Items.Clear();
|
var tmp = current.GetLayoutNameList();
|
foreach (var O in tmp) list.Items.Add(O, 0);
|
}
|
|
//保存样式
|
private void btnSave_Click(object sender, EventArgs e)
|
{
|
if (list.SelectedItem == null)
|
{
|
MessageBox.Show("请选择一个样式!");
|
return;
|
}
|
|
var layoutName =
|
((list.SelectedItem as ImageListBoxItem)
|
.Value as GridLayoutFile).Name;
|
if (DialogResult.Yes ==
|
MessageBox.Show("确定要保存为<" + layoutName + ">表格样式吗?", "对话框",
|
MessageBoxButtons.YesNo))
|
{
|
_Current.SaveLayout(layoutName);
|
Close();
|
}
|
}
|
|
//判断新增的样式是否存在
|
private bool IsExistsLayoutName(string layoutName)
|
{
|
foreach (ImageListBoxItem item in list.Items)
|
if ((item.Value as GridLayoutFile).Name == layoutName)
|
return true;
|
|
return false;
|
}
|
|
//设置默认样式
|
private void btnDefault_Click(object sender, EventArgs e)
|
{
|
if (list.SelectedItem == null)
|
{
|
MessageBox.Show("请选择一个样式名称!");
|
return;
|
}
|
|
var layoutName =
|
((list.SelectedItem as ImageListBoxItem)
|
.Value as GridLayoutFile).Name;
|
_Current.SetDefault(layoutName);
|
Msg.ShowInformation("设置默认样式成功,打开窗体时将默认加载此样式。");
|
Close();
|
}
|
|
//加载样式
|
private void btnLoad_Click(object sender, EventArgs e)
|
{
|
if (list.SelectedItem == null)
|
{
|
MessageBox.Show("请选择一个样式名称!");
|
return;
|
}
|
|
var layoutName =
|
((list.SelectedItem as ImageListBoxItem)
|
.Value as GridLayoutFile).Name;
|
_Current.RestoreLayout(layoutName);
|
Close();
|
}
|
|
//删除样式
|
private void btnDel_Click(object sender, EventArgs e)
|
{
|
if (list.SelectedItem == null) return;
|
|
var layoutName =
|
((list.SelectedItem as ImageListBoxItem)
|
.Value as GridLayoutFile).Name;
|
if (DialogResult.Yes ==
|
MessageBox.Show("确定要删除<" + layoutName + ">表格样式吗?", "对话框",
|
MessageBoxButtons.YesNo))
|
{
|
_Current.RemoveLayout(layoutName);
|
LoadLayoutList(_Current);
|
if (list.ItemCount == 0) lbCurrentLayout.Text = "无";
|
|
if (layoutName == lbCurrentLayout.Text)
|
MessageBox.Show("您删除当前正在使用的表格样式,重新打开窗体才能生效!");
|
}
|
}
|
|
//新增样式
|
private void btnAdd_Click(object sender, EventArgs e)
|
{
|
//防止路径遍历
|
var layoutName = txtConfigName.Text.Replace("..", "")
|
.Replace(@"\", "").Replace("/", "");
|
|
if (!string.IsNullOrWhiteSpace(layoutName))
|
{
|
if (!IsExistsLayoutName(layoutName))
|
{
|
_Current.SaveLayout(layoutName);
|
LoadLayoutList(_Current);
|
txtConfigName.Text = "";
|
txtConfigName.Focus();
|
}
|
else
|
{
|
MessageBox.Show("样式名称不可重复!");
|
}
|
}
|
}
|
|
#endregion
|
|
#region 私有静态方法
|
|
/// <summary>
|
/// 注册表格配置功能
|
/// </summary>
|
/// <param name="config"></param>
|
private static void RegistConfig(GridLayoutConfig config)
|
{
|
//config.CreateDefaultLayout(); ..
|
|
if (_HashGridConfig == null) _HashGridConfig = new Hashtable();
|
|
//重复注册表格,要删除原来的信息
|
var key = config.GetConfigName();
|
if (_HashGridConfig.ContainsKey(key)) _HashGridConfig.Remove(key);
|
|
//同一个表格只能注册一个配置信息
|
foreach (var K in _HashGridConfig.Keys)
|
if ((_HashGridConfig[K] as GridLayoutConfig).GridView ==
|
config.GridView)
|
{
|
_HashGridConfig.Remove(K);
|
break;
|
}
|
|
_HashGridConfig.Add(key, config);
|
|
//绑定弹出菜单,清除事件,避免重复添加
|
config.GridView.PopupMenuShowing -= OnShowGridMenu;
|
config.GridView.PopupMenuShowing += OnShowGridMenu;
|
}
|
|
/// <summary>
|
/// 在表格内点右键弹出菜单(菜单自动创建)
|
/// </summary>
|
private static void OnShowGridMenu(object sender,
|
PopupMenuShowingEventArgs e)
|
{
|
var view = sender as GridView;
|
|
//获取当前GridView的配置信息
|
_Current = GetConfigByGridView(view);
|
if (_Current == null) return;
|
|
//用户在表格列头、资料行、分组区域点击鼠标弹出菜单
|
if (GridMenuType.Column == e.MenuType && e.Menu != null)
|
{
|
var images = GetMenuImage();
|
|
//创建菜单项目
|
if (_Current.CustomGridStyle)
|
{
|
CreatePopupMenuItem(e.Menu, LanLib.Get("保存默认样式"),
|
images.Images[0], OnClick_SaveCurrent, true);
|
CreatePopupMenuItem(e.Menu, LanLib.Get("还原初始样式"),
|
images.Images[2], OnClick_DeleteCurrent, false);
|
CreatePopupMenuItem(e.Menu, LanLib.Get("样式管理器"),
|
images.Images[1], OnClick_OpenConfirmForm, false);
|
}
|
|
CreatePopupMenuItem(e.Menu, LanLib.Get("打印文件"),
|
images.Images[7], OnClick_PrintFile, true);
|
|
//创建二级菜单
|
var E = new DXSubMenuItem(LanLib.Get("导出文件"), null);
|
E.Image = images.Images[3];
|
E.BeginGroup = true; //分组
|
E.Items.Add(new DXMenuItem(LanLib.Get("导出Excel 97~2003文件"),
|
OnClick_ExportXlsOld, images.Images[4]));
|
E.Items.Add(new DXMenuItem(LanLib.Get("导出Excel 2007或以上版本"),
|
OnClick_ExportXlsNew, images.Images[5]));
|
E.Items.Add(new DXMenuItem(LanLib.Get("导出PDF文件"),
|
OnClick_ExportPDF, images.Images[6]));
|
e.Menu.Items.Add(E);
|
}
|
|
//扩展的菜单
|
if (e.Menu != null)
|
{
|
var list = (List<DXMenuItem>)_ExtraMenuClick[view];
|
if (list != null)
|
foreach (var menu in list)
|
e.Menu.Items.Add(menu);
|
}
|
}
|
|
private static void OnClick_PrintFile(object sender, EventArgs e)
|
{
|
var gc = _Current.GridView.GridControl; //绑定表格组件
|
var gv = _Current.GridView;
|
gv.OptionsPrint.AutoWidth = false;
|
|
//实例化打印组件
|
var link = new PrintableComponentLink(new PrintingSystem());
|
link.Component = gc;
|
link.Landscape = true;
|
link.PaperKind = PaperKind.A4;
|
link.CreateMarginalHeaderArea += Link_CreateMarginalHeaderArea;
|
link.CreateDocument();
|
link.ShowPreview();
|
}
|
|
private static void Link_CreateMarginalHeaderArea(object sender,
|
CreateAreaEventArgs e)
|
{
|
var gc = _Current.GridView.GridControl; //绑定表格组件
|
|
//LOGO
|
using (Image logo = Globals.LoadBitmap("csframeworklog.jpg"))
|
{
|
e.Graph.DrawImage(logo,
|
new RectangleF(0, 0, logo.Width, logo.Height),
|
BorderSide.None, Color.White);
|
}
|
|
//报表标题
|
var title = gc.FindForm().Text;
|
title = "《" + title + "》\r\n" + CommonData.CompanyInfo.NativeName;
|
var brick = e.Graph.DrawPageInfo(PageInfo.None, title, Color.Black,
|
new RectangleF(120, 0, 400, 60), BorderSide.None);
|
brick.LineAlignment = BrickAlignment.Center;
|
brick.Alignment = BrickAlignment.Center;
|
brick.AutoWidth = false;
|
brick.Font = new Font("黑体", 13f, FontStyle.Bold);
|
|
//打印时间信息
|
var text = string.Format("打印人:{0} 打印时间:{1}",
|
Loginer.CurrentUser.AccountName,
|
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
var P = new PageHeaderFooter();
|
P.Footer.Content.Add(text);
|
P.Footer.LineAlignment = BrickAlignment.Center;
|
(sender as PrintableComponentLink).PageHeaderFooter = P;
|
|
_Current.GridView.OptionsPrint.AutoWidth = false;
|
}
|
|
/// <summary>
|
/// 获取此表格的样式配置
|
/// </summary>
|
/// <param name="view">表格</param>
|
/// <returns></returns>
|
private static GridLayoutConfig GetConfigByGridView(GridView view)
|
{
|
foreach (GridLayoutConfig o in _HashGridConfig.Values)
|
if (o.GridView == view)
|
return o;
|
|
return null;
|
}
|
|
private static void OnClick_ExportXlsOld(object sender, EventArgs e)
|
{
|
if (_Current != null)
|
{
|
var dlg = new SaveFileDialog();
|
dlg.Filter = "Microsoft Office Excel 97~2003|*.xls";
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
_Current.GridView.ExportToXls(dlg.FileName);
|
if (File.Exists(CodeSafeHelper.GetSafePath(dlg.FileName)))
|
Msg.ShowInformation("导出文件" + dlg.FileName + "成功!");
|
else
|
Msg.Warning("导出文件" + dlg.FileName + "失败!");
|
}
|
}
|
}
|
|
private static void OnClick_ExportXlsNew(object sender, EventArgs e)
|
{
|
if (_Current != null)
|
{
|
var dlg = new SaveFileDialog();
|
dlg.Filter = "Microsoft Office Excel 2007或以上|*.xlsx";
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
_Current.GridView.ExportToXlsx(dlg.FileName);
|
if (File.Exists(CodeSafeHelper.GetSafePath(dlg.FileName)))
|
Msg.ShowInformation("导出文件" + dlg.FileName + "成功!");
|
else
|
Msg.Warning("导出文件" + dlg.FileName + "失败!");
|
}
|
}
|
}
|
|
private static void OnClick_ExportPDF(object sender, EventArgs e)
|
{
|
if (_Current != null)
|
{
|
var dlg = new SaveFileDialog();
|
dlg.Filter = "PDF格式文件|*.pdf";
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
_Current.GridView.ExportToPdf(
|
CodeSafeHelper.GetSafePath(dlg.FileName));
|
Msg.ShowInformation("导出文件成功!文件名:" + dlg.FileName);
|
}
|
}
|
}
|
|
private static void OnClick_DeleteCurrent(object sender, EventArgs e)
|
{
|
if (_Current != null)
|
if (Msg.AskQuestion("确定要还原为初始样式吗?"))
|
{
|
_Current.ResetLayout();
|
Msg.ShowInformation("请重新打开窗体使样式生效!");
|
}
|
}
|
|
private static void OnClick_OpenConfirmForm(object sender, EventArgs e)
|
{
|
if (_Current != null)
|
{
|
var form = new frmGridCustomize();
|
form.LoadLayoutList(_Current);
|
form.ShowDialog();
|
}
|
}
|
|
private static void OnClick_SaveCurrent(object sender, EventArgs e)
|
{
|
if (_Current != null)
|
{
|
_Current.SetDefault(GridLayoutConfig.DEF_LAYOUT_NAME);
|
_Current.SaveLayout(GridLayoutConfig.DEF_LAYOUT_NAME);
|
Msg.ShowInformation("保存成功!");
|
}
|
}
|
|
private static ImageList _ImageListMenu;
|
|
/// <summary>
|
/// 获取菜单图标库
|
/// </summary>
|
/// <returns></returns>
|
private static ImageList GetMenuImage()
|
{
|
if (_ImageListMenu == null)
|
_ImageListMenu = new frmGridCustomize().imageList2;
|
|
return _ImageListMenu;
|
}
|
|
/// <summary>
|
/// 创建菜单项DXMenuItem
|
/// </summary>
|
/// <param name="owner">GridViewMenu</param>
|
/// <param name="caption">菜单标题</param>
|
/// <param name="image">菜单图片</param>
|
/// <param name="clickEvent">Click 事件</param>
|
/// <param name="beginGroup"></param>
|
public static void CreatePopupMenuItem(GridViewMenu owner,
|
string caption, Image image, EventHandler clickEvent,
|
bool beginGroup)
|
{
|
var item = new DXMenuItem(caption);
|
item.Image = image;
|
item.Click += clickEvent;
|
item.Tag = owner.View; //保存GridView引用,在DXMenuItem事件内快速找到GridView
|
item.BeginGroup = beginGroup;
|
owner.Items.Add(item);
|
}
|
|
#endregion
|
|
#region AddMenuItem扩展方法,表格弹出菜单添加自定义菜单项
|
|
private static Hashtable _ExtraMenuClick = new Hashtable();
|
|
/// <summary>
|
/// AddMenuItem扩展方法,表格弹出菜单添加自定义菜单项
|
/// </summary>
|
/// <param name="view">GridView表格</param>
|
/// <param name="caption">菜单标题</param>
|
/// <param name="image">菜单图片</param>
|
/// <param name="clickEvent">click事件</param>
|
/// <param name="beginGroup">是否带分割线的菜单项</param>
|
public static void AddMenuItem(GridView view, string caption,
|
Image image, EventHandler clickEvent,
|
bool beginGroup)
|
{
|
var list = (List<DXMenuItem>)_ExtraMenuClick[view];
|
|
if (list == null)
|
{
|
list = new List<DXMenuItem>();
|
_ExtraMenuClick.Add(view, list);
|
}
|
|
var item = new DXMenuItem(caption);
|
item.Image = image;
|
item.Click += clickEvent;
|
item.Tag = view; //保存GridView引用,在DXMenuItem事件内快速找到GridView
|
item.BeginGroup = beginGroup;
|
|
list.Add(item);
|
}
|
|
#endregion
|
}
|
|
/// <summary>
|
/// 表格配置类.
|
/// </summary>
|
internal class GridLayoutConfig
|
{
|
/***********************************************************
|
* 说明:
|
* 1.一个表格支持多个配置,同时,一个窗体支持多个表格的配置
|
* 2.样式文件:GridLayoutCustomize.Form1.gridView1.Default.预设样式.xml
|
* 3.表格全名:GridLayoutCustomize.Form1.gridView1
|
* 4.Default:预设配置名称,gridView1下可配置如:凭证格式,记账格式等
|
* 5.预设样式:为配置名称下一个样式,每个样式存储一个xml文件
|
************************************************************/
|
|
internal const string DEF_LAYOUT_NAME = "预设样式";
|
private string _ConfigName = "";
|
private string _CurrentLayoutName = DEF_LAYOUT_NAME;
|
|
private GridView _View;
|
|
internal GridLayoutConfig(GridView view, string configName)
|
{
|
_View = view;
|
_ConfigName = configName;
|
_CurrentLayoutName = GetDefaultLayoutName();
|
}
|
|
/// <summary>
|
/// 本配置的当前样式名称
|
/// </summary>
|
internal string CurrentLayoutName => _CurrentLayoutName;
|
|
internal bool CustomGridStyle { get; set; }
|
|
/// <summary>
|
/// 表格对象
|
/// </summary>
|
internal GridView GridView => _View;
|
|
/// <summary>
|
/// 创建预设样式配置文件(xml), 若文件已存在则不创建。
|
/// </summary>
|
internal void CreateDefaultLayout()
|
{
|
var xmlFile = GetConfigFilePath(DEF_LAYOUT_NAME);
|
|
if (!File.Exists(CodeSafeHelper.GetSafePath(xmlFile)))
|
{
|
SaveLayout(DEF_LAYOUT_NAME);
|
SetDefault(DEF_LAYOUT_NAME);
|
_CurrentLayoutName = DEF_LAYOUT_NAME;
|
}
|
}
|
|
/// <summary>
|
/// 删除配置文件
|
/// </summary>
|
/// <param name="xmlFile"></param>
|
private void DeleteConfigFile(string xmlFile)
|
{
|
if (File.Exists(CodeSafeHelper.GetSafePath(xmlFile)))
|
{
|
SetFileAttributeNormal(xmlFile);
|
File.Delete(CodeSafeHelper.GetSafePath(xmlFile));
|
}
|
}
|
|
/// <summary>
|
/// 获取配置文件完整路径
|
/// </summary>
|
/// <returns></returns>
|
private string GetConfigFilePath(string layoutName)
|
{
|
if (string.IsNullOrEmpty(layoutName)) layoutName = DEF_LAYOUT_NAME;
|
|
var filePath = GetLayoutDirectory() + GetConfigName() + "." +
|
layoutName + ".xml";
|
return filePath;
|
}
|
|
/// <summary>
|
/// 获取表格配置名称
|
/// </summary>
|
/// <returns></returns>
|
internal string GetConfigName()
|
{
|
var name = _View.GridControl.FindForm().GetType().FullName + "." +
|
_View.Name + "." + _ConfigName;
|
return name;
|
}
|
|
/// <summary>
|
/// 获取预设加载的样式名称
|
/// </summary>
|
/// <returns></returns>
|
internal string GetDefaultLayoutName()
|
{
|
var configName = GetConfigName();
|
var iniFile = GetLayoutDirectory() + "DefaultName.ini";
|
var ini = new IniFile(iniFile);
|
return ini.IniReadValue("DefaultLayout", configName, "");
|
}
|
|
/// <summary>
|
/// 获取样式文件所在目录
|
/// </summary>
|
/// <returns></returns>
|
private string GetLayoutDirectory()
|
{
|
var directory = Application.StartupPath + @"\Config\GridLayout\";
|
if (!Directory.Exists(directory))
|
Directory.CreateDirectory(directory);
|
|
return directory;
|
}
|
|
/// <summary>
|
/// 获取当前配置的所有样式
|
/// </summary>
|
/// <returns></returns>
|
internal List<GridLayoutFile> GetLayoutNameList()
|
{
|
var list = new List<GridLayoutFile>();
|
var defaultName = GetDefaultLayoutName();
|
var directory = GetLayoutDirectory();
|
var configName = GetConfigName();
|
var files = Directory.GetFiles(
|
CodeSafeHelper.GetSafePath(directory),
|
CodeSafeHelper.GetSafePath(configName + ".*.xml"));
|
foreach (var file in files)
|
{
|
var layout = new GridLayoutFile();
|
layout.FileName = file;
|
layout.FullName = Path.GetFileNameWithoutExtension(file);
|
var i = layout.FullName.LastIndexOf('.');
|
layout.Name = layout.FullName.Substring(i + 1,
|
layout.FullName.Length - i - 1);
|
layout.CreateTime =
|
File.GetCreationTime(CodeSafeHelper.GetSafePath(file));
|
layout.IsDefault = layout.Name == defaultName;
|
list.Add(layout);
|
}
|
|
return list;
|
}
|
|
/// <summary>
|
/// 删除样式
|
/// </summary>
|
/// <param name="layoutName">样式名称</param>
|
internal void RemoveLayout(string layoutName)
|
{
|
var xmlFile = GetConfigFilePath(layoutName);
|
DeleteConfigFile(xmlFile);
|
}
|
|
/// <summary>
|
/// 还原当前样式
|
/// </summary>
|
internal void ResetLayout()
|
{
|
var xmlFile = GetConfigFilePath(DEF_LAYOUT_NAME);
|
DeleteConfigFile(xmlFile);
|
SetDefault("");
|
}
|
|
/// <summary>
|
/// 加载配置
|
/// </summary>
|
internal void RestoreLayout()
|
{
|
RestoreLayout(_CurrentLayoutName);
|
}
|
|
/// <summary>
|
/// 还原样式,加载样式
|
/// </summary>
|
/// <param name="layoutName">样式名称</param>
|
internal void RestoreLayout(string layoutName)
|
{
|
_CurrentLayoutName = layoutName;
|
var xmlFile = GetConfigFilePath(layoutName);
|
if (File.Exists(CodeSafeHelper.GetSafePath(xmlFile)))
|
_View.RestoreLayoutFromXml(xmlFile);
|
}
|
|
/// <summary>
|
/// 保存表格配置
|
/// </summary>
|
internal void SaveLayout()
|
{
|
if (_CurrentLayoutName == "")
|
{
|
_CurrentLayoutName = DEF_LAYOUT_NAME;
|
SetDefault(DEF_LAYOUT_NAME);
|
}
|
|
SaveLayout(_CurrentLayoutName);
|
}
|
|
/// <summary>
|
/// 保存样式
|
/// </summary>
|
/// <param name="layoutName">样式名称</param>
|
internal void SaveLayout(string layoutName)
|
{
|
var xmlFile = GetConfigFilePath(layoutName);
|
|
DeleteConfigFile(xmlFile);
|
|
_View.SaveLayoutToXml(xmlFile);
|
}
|
|
/// <summary>
|
/// 设置预设样式
|
/// </summary>
|
/// <param name="layoutName">样式名称</param>
|
internal void SetDefault(string layoutName)
|
{
|
var configName = GetConfigName();
|
var iniFile = GetLayoutDirectory() + "DefaultName.ini";
|
var ini = new IniFile(iniFile);
|
ini.IniWriteValue("DefaultLayout", configName, layoutName);
|
}
|
|
/// <summary>
|
/// 去掉文件只读属性
|
/// </summary>
|
/// <param name="aFilePath"></param>
|
private void SetFileAttributeNormal(string aFilePath)
|
{
|
if (File.GetAttributes(CodeSafeHelper.GetSafePath(aFilePath))
|
.ToStringEx().IndexOf("ReadOnly") != -1)
|
File.SetAttributes(CodeSafeHelper.GetSafePath(aFilePath),
|
FileAttributes.Normal);
|
}
|
}
|
|
/// <summary>
|
/// 样式文件
|
/// </summary>
|
internal class GridLayoutFile
|
{
|
internal GridLayoutFile()
|
{
|
Name = "";
|
FullName = "";
|
FileName = "";
|
IsDefault = false;
|
}
|
|
internal DateTime CreateTime { get; set; }
|
internal string FileName { get; set; }
|
internal string FullName { get; set; }
|
|
internal bool IsDefault { get; set; }
|
|
internal string Name { get; set; }
|
|
public override string ToString()
|
{
|
return Name + " - 创建时间:" + CreateTime.ToString("yyyy/MM/dd HH:mm") +
|
(IsDefault ? "(默认)" : "");
|
}
|
}
|
}
|