using System.Windows.Forms;
using Dongke.IBOSS.PRD.Basics.BaseResources;
namespace Dongke.IBOSS.PRD.Basics.BaseControls
{
///
/// 系统消息(N、I、W、E、Q)
///
///
/// {N|I|W|E|Q}[O|YN|YNC|OC|RC|ARI]_[1|2|3]_{模块名缩写}_{C|S}_{消息SEQ}
/// {N|I|W|E|Q}:消息类型
/// N:无(默认按钮OK)
/// I:Information(默认按钮OK)
/// W:Warning(默认按钮OK)
/// E:Error(默认按钮OK)
/// Q:Question(默认按钮Yes、No)
/// [YN|YNC|OC|RC|ARI]:按钮模式(可以忽略)
/// O :OK(默认按钮1)
/// YN :Yes、No(默认按钮2)
/// YNC:Yes、No、Cancel(默认按钮3)
/// OC :OK、Cancel(默认按钮1)
/// RC :Retry、Cancel(默认按钮1)
/// ARI:Abort、Retry、Ignore(默认按钮2)
/// [1|2|3]:默认按钮(可以忽略)
/// {C|S}:分类
/// C:客户端消息
/// S:服务端消息
/// 消息类型默认按钮:
/// N:N_XXX=NO_XXX=N_1_XXX=NO_1_XXX
/// I:I_XXX=IO_XXX=I_1_XXX=IO_1_XXX
/// W:W_XXX=WO_XXX=W_1_XXX=WO_1_XXX
/// E:E_XXX=EO_XXX=E_1_XXX=EO_1_XXX
/// Q:Q_XXX=QYN_XXX=Q_2_XXX=QYN_2_XXX
///
public enum DKMessageCode
{
#region Information Serivce
///
/// 根据查询条件,没有查询到相应的数据。
///
I_CMN_S_001,
///
/// 操作完成
///
I_CMN_S_002,
#endregion Information Serivce
#region Information Client
#endregion Information Client
#region Warning Serivce
///
/// 服务器时间(账务日期异常)
///
W_CMN_S_001,
///
/// 验证失败,是否重新登录
///
WYN_CMN_S_002,
///
/// 在其他客户端登录,是否重新登录
///
WYN_CMN_S_003,
///
/// 不允许进行该操作。原因:{0}
///
W_CMN_S_004,
///
/// 数据已被修改
///
W_CMN_S_005,
///
/// 数据重复
///
W_CMN_S_006,
#endregion Warning Serivce
#region Warning Client
///
/// 没有选择任何数据。
///
W_CMN_C_001,
///
/// {0}不能大于账务日期({1})。
///
W_CMN_C_002,
///
/// {0}是必须输入项目,请输入{0}。
///
W_CMN_C_003,
///
/// 输入的{0}不能和{1}相同,请重新输入。
///
W_CMN_C_004,
///
/// 输入的条码({0})格式不正确,请重新输入。条码必须以10位数字结尾。
///
W_CMN_C_005,
///
/// 不允许进行该操作。原因:{0}
///
W_CMN_C_006,
#endregion Warning Client
#region Error Serivce
///
/// 系统服务端异常
///
E_CMN_S_001,
#endregion Error Serivce
#region Error Client
///
/// 系统客户端异常
///
E_CMN_C_001,
#endregion Error Client
#region Question Serivce
#endregion Question Serivce
#region Question Client
#endregion Question Client
}
///
/// 显示可包含文本、按钮和符号(通知并指示用户)的消息框
///
public static class DKMessageBox
{
///
/// 显示具有指定文本、标题、按钮、图标、默认按钮和选项的消息框
///
/// 窗体
/// 消息编码
/// 其中包含零个或多个要设置格式的对象
/// 消息结果
public static DialogResult ShowDialog(Form owner, DKMessageCode messageCode, params string[] args)
{
string code = messageCode.ToString();
MessageBoxIcon mIcon = MessageBoxIcon.None;
MessageBoxButtons mButtons = MessageBoxButtons.OK;
MessageBoxDefaultButton mDefaultButton = MessageBoxDefaultButton.Button1;
DKMessageBox.SetStyle(code, ref mIcon, ref mButtons, ref mDefaultButton);
string message = string.Format(Messages.ResourceManager.GetString(code), args);
return MessageBox.Show(owner, message, owner.Text, mButtons, mIcon, mDefaultButton);
}
///
/// 显示具有指定文本、标题、按钮、图标、默认按钮和选项的消息框
///
/// 窗体
/// 详细信息
/// 消息编码
/// 其中包含零个或多个要设置格式的对象
/// 消息结果
public static DialogResult ShowDialog(Form owner, string detail, DKMessageCode messageCode, params string[] args)
{
string code = messageCode.ToString();
MessageBoxIcon mIcon = MessageBoxIcon.None;
MessageBoxButtons mButtons = MessageBoxButtons.OK;
MessageBoxDefaultButton mDefaultButton = MessageBoxDefaultButton.Button1;
DKMessageBox.SetStyle(code, ref mIcon, ref mButtons, ref mDefaultButton);
string message = string.Format(Messages.ResourceManager.GetString(code), args)
+ System.Environment.NewLine
+ detail;
return MessageBox.Show(owner, message, owner.Text, mButtons, mIcon, mDefaultButton);
}
///
/// 设置消息样式
///
/// 消息编码
/// 消息图标
/// 消息按钮
/// 默认按钮
private static void SetStyle(string code,
ref MessageBoxIcon mIcon,
ref MessageBoxButtons mButtons,
ref MessageBoxDefaultButton mDefaultButton)
{
string[] type = code.Split('_');
char icon = type[0][0];
switch (icon)
{
case 'I':
mIcon = MessageBoxIcon.Information;
break;
case 'W':
mIcon = MessageBoxIcon.Warning;
break;
case 'E':
mIcon = MessageBoxIcon.Error;
break;
case 'Q':
mIcon = MessageBoxIcon.Question;
mButtons = MessageBoxButtons.YesNo;
mDefaultButton = MessageBoxDefaultButton.Button2;
break;
default:
break;
}
if (type[0].Length > 1)
{
string buttons = type[0].Substring(1);
if ("YN" == buttons)
{
mButtons = MessageBoxButtons.YesNo;
mDefaultButton = MessageBoxDefaultButton.Button2;
}
else if ("YNC" == buttons)
{
mButtons = MessageBoxButtons.YesNoCancel;
mDefaultButton = MessageBoxDefaultButton.Button3;
}
else if ("OC" == buttons)
{
mButtons = MessageBoxButtons.OKCancel;
mDefaultButton = MessageBoxDefaultButton.Button1;
}
else if ("RC" == buttons)
{
mButtons = MessageBoxButtons.RetryCancel;
mDefaultButton = MessageBoxDefaultButton.Button1;
}
else if ("ARI" == buttons)
{
mButtons = MessageBoxButtons.AbortRetryIgnore;
mDefaultButton = MessageBoxDefaultButton.Button2;
}
}
if (type.Length > 1)
{
if ("1" == type[1])
{
mDefaultButton = MessageBoxDefaultButton.Button1;
}
else if ("2" == type[1])
{
mDefaultButton = MessageBoxDefaultButton.Button2;
}
else if ("3" == type[1])
{
mDefaultButton = MessageBoxDefaultButton.Button3;
}
}
}
}
}