EnterRestriction.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Drawing;
  6. using System.Globalization;
  7. using System;
  8. using System.Web.UI;
  9. namespace ETD.Common
  10. {
  11. ///EnterRestriction _er = new EnterRestriction(txtContent);
  12. //_er.ContentJudgeE = ContentJudgeEnum.None;
  13. /// <summary>
  14. /// 用于限制控件输入
  15. /// </summary>
  16. public class EnterRestriction
  17. {
  18. public ContentJudgeEnum ContentJudgeE { get; set; }
  19. public string Expression { get; set; }
  20. private System.Windows.Forms.Control Control { get; set; }
  21. private static Color _color;
  22. public bool IsPass;
  23. public EnterRestriction(Control control, ContentJudgeEnum cje=ContentJudgeEnum.JudgeIsChinese)
  24. {
  25.       /// Try ContentJudgeE = cje;
  26. Control = control;
  27. control.KeyPress += control_KeyPress;
  28. control.Leave+=control_Leave;
  29. }
  30. void control_Leave(object sender, EventArgs e)
  31. {
  32.       /// Try var content = Control.Text;
  33. if (content.Trim() == string.Empty||ContentJudgeE == ContentJudgeEnum.None) return;
  34. if (_color.IsEmpty)
  35. {
  36. _color = Control.BackColor;
  37. }
  38. else
  39. {
  40. Control.BackColor = _color;
  41. }
  42. IsPass = true;
  43. switch (ContentJudgeE)
  44. {
  45. case ContentJudgeEnum.JudgeDiy:
  46. if (ContentJudge.JudgeDiy(content, Expression)) return;
  47. break;
  48. case ContentJudgeEnum.JudgeIsIp:
  49. if (ContentJudge.JudgeIsIp(content)) return;
  50. break;
  51. case ContentJudgeEnum.JudgeIsMailAddress:
  52. if (ContentJudge.JudgeIsMailAddress(content)) return;
  53. break;
  54. case ContentJudgeEnum.JudgeIsMinusDecimal:
  55. if (ContentJudge.JudgeIsMinusDecimal(content)) return;
  56. break;
  57. case ContentJudgeEnum.JudgeIsMinusInt:
  58. if (ContentJudge.JudgeIsMinusInt(content)) return;
  59. break;
  60. case ContentJudgeEnum.JudgeIsMobilePhoneNumber:
  61. if (ContentJudge.JudgeIsMobilePhoneNumber(content)) return;
  62. break;
  63. case ContentJudgeEnum.JudgeIsCapital:
  64. if (ContentJudge.JudgeIsCapital(content)) return;
  65. break;
  66. case ContentJudgeEnum.JudgeIsChinese:
  67. if (ContentJudge.JudgeIsChinese(content)) return;
  68. break;
  69. case ContentJudgeEnum.JudgeIsLetter:
  70. if (ContentJudge.JudgeIsLetter(content)) return;
  71. break;
  72. case ContentJudgeEnum.JudgeIsLetterAndChinese:
  73. if (ContentJudge.JudgeIsLetterAndChinese(content)) return;
  74. break;
  75. case ContentJudgeEnum.JudgeIsLetterAndNumber:
  76. if (ContentJudge.JudgeIsLetterAndNumber(content)) return;
  77. break;
  78. case ContentJudgeEnum.JudgeIsNumberAndChinese:
  79. if (ContentJudge.JudgeIsNumberAndChinese(content)) return;
  80. break;
  81. case ContentJudgeEnum.JudgeIsPhoneNumber:
  82. if (ContentJudge.JudgeIsPhoneNumber(content)) return;
  83. break;
  84. case ContentJudgeEnum.JudgeIsPositiveDecimal:
  85. if (ContentJudge.JudgeIsPositiveDecimal(content)) return;
  86. break;
  87. case ContentJudgeEnum.JudgeIsPositiveInt:
  88. if (ContentJudge.JudgeIsPositiveInt(content)) return;
  89. break;
  90. case ContentJudgeEnum.JudgeIsSmallLetter:
  91. if (ContentJudge.JudgeIsSmallLetter(content)) return;
  92. break;
  93. }
  94. Control.BackColor = Color.Aquamarine;
  95. IsPass = false;
  96. }
  97. void control_KeyPress(object sender, KeyPressEventArgs e)
  98. {
  99. if (e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Enter)
  100. {
  101. return;
  102. }
  103. switch (ContentJudgeE)
  104. {
  105. case ContentJudgeEnum.JudgeIsCapital:
  106. e.Handled = !ContentJudge.JudgeIsCapital(e.KeyChar.ToString(CultureInfo.InvariantCulture));
  107. break;
  108. case ContentJudgeEnum.JudgeIsChinese:
  109. e.Handled = !ContentJudge.JudgeIsChinese(e.KeyChar.ToString(CultureInfo.InvariantCulture));
  110. break;
  111. case ContentJudgeEnum.JudgeIsLetter:
  112. e.Handled = !ContentJudge.JudgeIsLetter(e.KeyChar.ToString(CultureInfo.InvariantCulture));
  113. break;
  114. case ContentJudgeEnum.JudgeIsLetterAndChinese:
  115. e.Handled = !ContentJudge.JudgeIsLetterAndChinese(e.KeyChar.ToString(CultureInfo.InvariantCulture));
  116. break;
  117. case ContentJudgeEnum.JudgeIsLetterAndNumber:
  118. e.Handled = !ContentJudge.JudgeIsLetterAndNumber(e.KeyChar.ToString(CultureInfo.InvariantCulture));
  119. break;
  120. case ContentJudgeEnum.JudgeIsNumberAndChinese:
  121. e.Handled = !ContentJudge.JudgeIsNumberAndChinese(e.KeyChar.ToString(CultureInfo.InvariantCulture));
  122. break;
  123. case ContentJudgeEnum.JudgeIsPositiveDecimal:
  124. e.Handled = !ContentJudge.JudgeIsPositiveDecimal(e.KeyChar.ToString(CultureInfo.InvariantCulture));
  125. break;
  126. case ContentJudgeEnum.JudgeIsPositiveInt:
  127. e.Handled = !ContentJudge.JudgeIsPositiveInt(e.KeyChar.ToString(CultureInfo.InvariantCulture));
  128. break;
  129. case ContentJudgeEnum.JudgeIsSmallLetter:
  130. e.Handled = !ContentJudge.JudgeIsSmallLetter(e.KeyChar.ToString(CultureInfo.InvariantCulture));
  131. break;
  132. }
  133. }
  134. }
  135. }