DKMessageBox.cs 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. 
  2. using System.Windows.Forms;
  3. using Dongke.IBOSS.PRD.Basics.BaseResources;
  4. namespace Dongke.IBOSS.PRD.Basics.BaseControls
  5. {
  6. /// <summary>
  7. /// 系统消息(N、I、W、E、Q)
  8. /// </summary>
  9. /// <example>
  10. /// {N|I|W|E|Q}[O|YN|YNC|OC|RC|ARI]_[1|2|3]_{模块名缩写}_{C|S}_{消息SEQ}
  11. /// {N|I|W|E|Q}:消息类型
  12. /// N:无(默认按钮OK)
  13. /// I:Information(默认按钮OK)
  14. /// W:Warning(默认按钮OK)
  15. /// E:Error(默认按钮OK)
  16. /// Q:Question(默认按钮Yes、No)
  17. /// [YN|YNC|OC|RC|ARI]:按钮模式(可以忽略)
  18. /// O :OK(默认按钮1)
  19. /// YN :Yes、No(默认按钮2)
  20. /// YNC:Yes、No、Cancel(默认按钮3)
  21. /// OC :OK、Cancel(默认按钮1)
  22. /// RC :Retry、Cancel(默认按钮1)
  23. /// ARI:Abort、Retry、Ignore(默认按钮2)
  24. /// [1|2|3]:默认按钮(可以忽略)
  25. /// {C|S}:分类
  26. /// C:客户端消息
  27. /// S:服务端消息
  28. /// 消息类型默认按钮:
  29. /// N:N_XXX=NO_XXX=N_1_XXX=NO_1_XXX
  30. /// I:I_XXX=IO_XXX=I_1_XXX=IO_1_XXX
  31. /// W:W_XXX=WO_XXX=W_1_XXX=WO_1_XXX
  32. /// E:E_XXX=EO_XXX=E_1_XXX=EO_1_XXX
  33. /// Q:Q_XXX=QYN_XXX=Q_2_XXX=QYN_2_XXX
  34. /// </example>
  35. public enum DKMessageCode
  36. {
  37. #region Information Serivce
  38. /// <summary>
  39. /// 根据查询条件,没有查询到相应的数据。
  40. /// </summary>
  41. I_CMN_S_001,
  42. /// <summary>
  43. /// 操作完成
  44. /// </summary>
  45. I_CMN_S_002,
  46. #endregion Information Serivce
  47. #region Information Client
  48. #endregion Information Client
  49. #region Warning Serivce
  50. /// <summary>
  51. /// 服务器时间(账务日期异常)
  52. /// </summary>
  53. W_CMN_S_001,
  54. /// <summary>
  55. /// 验证失败,是否重新登录
  56. /// </summary>
  57. WYN_CMN_S_002,
  58. /// <summary>
  59. /// 在其他客户端登录,是否重新登录
  60. /// </summary>
  61. WYN_CMN_S_003,
  62. /// <summary>
  63. /// 不允许进行该操作。原因:{0}
  64. /// </summary>
  65. W_CMN_S_004,
  66. /// <summary>
  67. /// 数据已被修改
  68. /// </summary>
  69. W_CMN_S_005,
  70. /// <summary>
  71. /// 数据重复
  72. /// </summary>
  73. W_CMN_S_006,
  74. #endregion Warning Serivce
  75. #region Warning Client
  76. /// <summary>
  77. /// 没有选择任何数据。
  78. /// </summary>
  79. W_CMN_C_001,
  80. /// <summary>
  81. /// {0}不能大于账务日期({1})。
  82. /// </summary>
  83. W_CMN_C_002,
  84. /// <summary>
  85. /// {0}是必须输入项目,请输入{0}。
  86. /// </summary>
  87. W_CMN_C_003,
  88. /// <summary>
  89. /// 输入的{0}不能和{1}相同,请重新输入。
  90. /// </summary>
  91. W_CMN_C_004,
  92. /// <summary>
  93. /// 输入的条码({0})格式不正确,请重新输入。条码必须以10位数字结尾。
  94. /// </summary>
  95. W_CMN_C_005,
  96. /// <summary>
  97. /// 不允许进行该操作。原因:{0}
  98. /// </summary>
  99. W_CMN_C_006,
  100. #endregion Warning Client
  101. #region Error Serivce
  102. /// <summary>
  103. /// 系统服务端异常
  104. /// </summary>
  105. E_CMN_S_001,
  106. #endregion Error Serivce
  107. #region Error Client
  108. /// <summary>
  109. /// 系统客户端异常
  110. /// </summary>
  111. E_CMN_C_001,
  112. #endregion Error Client
  113. #region Question Serivce
  114. #endregion Question Serivce
  115. #region Question Client
  116. #endregion Question Client
  117. }
  118. /// <summary>
  119. /// 显示可包含文本、按钮和符号(通知并指示用户)的消息框
  120. /// </summary>
  121. public static class DKMessageBox
  122. {
  123. /// <summary>
  124. /// 显示具有指定文本、标题、按钮、图标、默认按钮和选项的消息框
  125. /// </summary>
  126. /// <param name="owner">窗体</param>
  127. /// <param name="messageCode">消息编码</param>
  128. /// <param name="args">其中包含零个或多个要设置格式的对象</param>
  129. /// <returns>消息结果</returns>
  130. public static DialogResult ShowDialog(Form owner, DKMessageCode messageCode, params string[] args)
  131. {
  132. string code = messageCode.ToString();
  133. MessageBoxIcon mIcon = MessageBoxIcon.None;
  134. MessageBoxButtons mButtons = MessageBoxButtons.OK;
  135. MessageBoxDefaultButton mDefaultButton = MessageBoxDefaultButton.Button1;
  136. DKMessageBox.SetStyle(code, ref mIcon, ref mButtons, ref mDefaultButton);
  137. string message = string.Format(Messages.ResourceManager.GetString(code), args);
  138. return MessageBox.Show(owner, message, owner.Text, mButtons, mIcon, mDefaultButton);
  139. }
  140. /// <summary>
  141. /// 显示具有指定文本、标题、按钮、图标、默认按钮和选项的消息框
  142. /// </summary>
  143. /// <param name="owner">窗体</param>
  144. /// <param name="detail">详细信息</param>
  145. /// <param name="messageCode">消息编码</param>
  146. /// <param name="args">其中包含零个或多个要设置格式的对象</param>
  147. /// <returns>消息结果</returns>
  148. public static DialogResult ShowDialog(Form owner, string detail, DKMessageCode messageCode, params string[] args)
  149. {
  150. string code = messageCode.ToString();
  151. MessageBoxIcon mIcon = MessageBoxIcon.None;
  152. MessageBoxButtons mButtons = MessageBoxButtons.OK;
  153. MessageBoxDefaultButton mDefaultButton = MessageBoxDefaultButton.Button1;
  154. DKMessageBox.SetStyle(code, ref mIcon, ref mButtons, ref mDefaultButton);
  155. string message = string.Format(Messages.ResourceManager.GetString(code), args)
  156. + System.Environment.NewLine
  157. + detail;
  158. return MessageBox.Show(owner, message, owner.Text, mButtons, mIcon, mDefaultButton);
  159. }
  160. /// <summary>
  161. /// 设置消息样式
  162. /// </summary>
  163. /// <param name="code">消息编码</param>
  164. /// <param name="mIcon">消息图标</param>
  165. /// <param name="mButtons">消息按钮</param>
  166. /// <param name="mDefaultButton">默认按钮</param>
  167. private static void SetStyle(string code,
  168. ref MessageBoxIcon mIcon,
  169. ref MessageBoxButtons mButtons,
  170. ref MessageBoxDefaultButton mDefaultButton)
  171. {
  172. string[] type = code.Split('_');
  173. char icon = type[0][0];
  174. switch (icon)
  175. {
  176. case 'I':
  177. mIcon = MessageBoxIcon.Information;
  178. break;
  179. case 'W':
  180. mIcon = MessageBoxIcon.Warning;
  181. break;
  182. case 'E':
  183. mIcon = MessageBoxIcon.Error;
  184. break;
  185. case 'Q':
  186. mIcon = MessageBoxIcon.Question;
  187. mButtons = MessageBoxButtons.YesNo;
  188. mDefaultButton = MessageBoxDefaultButton.Button2;
  189. break;
  190. default:
  191. break;
  192. }
  193. if (type[0].Length > 1)
  194. {
  195. string buttons = type[0].Substring(1);
  196. if ("YN" == buttons)
  197. {
  198. mButtons = MessageBoxButtons.YesNo;
  199. mDefaultButton = MessageBoxDefaultButton.Button2;
  200. }
  201. else if ("YNC" == buttons)
  202. {
  203. mButtons = MessageBoxButtons.YesNoCancel;
  204. mDefaultButton = MessageBoxDefaultButton.Button3;
  205. }
  206. else if ("OC" == buttons)
  207. {
  208. mButtons = MessageBoxButtons.OKCancel;
  209. mDefaultButton = MessageBoxDefaultButton.Button1;
  210. }
  211. else if ("RC" == buttons)
  212. {
  213. mButtons = MessageBoxButtons.RetryCancel;
  214. mDefaultButton = MessageBoxDefaultButton.Button1;
  215. }
  216. else if ("ARI" == buttons)
  217. {
  218. mButtons = MessageBoxButtons.AbortRetryIgnore;
  219. mDefaultButton = MessageBoxDefaultButton.Button2;
  220. }
  221. }
  222. if (type.Length > 1)
  223. {
  224. if ("1" == type[1])
  225. {
  226. mDefaultButton = MessageBoxDefaultButton.Button1;
  227. }
  228. else if ("2" == type[1])
  229. {
  230. mDefaultButton = MessageBoxDefaultButton.Button2;
  231. }
  232. else if ("3" == type[1])
  233. {
  234. mDefaultButton = MessageBoxDefaultButton.Button3;
  235. }
  236. }
  237. }
  238. }
  239. }