FullKeyboard.xaml.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4. using System.Windows;
  5. using System.Windows.Controls;
  6. using System.Windows.Input;
  7. namespace MECF.Framework.UI.Client.CenterViews.Dialogs
  8. {
  9. public partial class FullKeyboard : Window
  10. {
  11. //public FullKeyboard()
  12. //{
  13. // InitializeComponent();
  14. //}
  15. private String valueString;
  16. public String ValueString
  17. {
  18. get { return valueString; }
  19. }
  20. public FullKeyboard(String inputTitle, String inputvalue)
  21. {
  22. InitializeComponent();
  23. FullKeyboardTitle.Text = inputTitle;
  24. tbValue.Text = inputvalue;
  25. // tbValue.SelectionStart = inputvalue.Length;
  26. valueString = inputvalue;
  27. }
  28. //通过判断按钮的content属性来做对应处理,以简化大量按钮的编程
  29. private void Button_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  30. {
  31. if (e.StylusDevice != null)
  32. {
  33. e.Handled = true;
  34. }
  35. else
  36. {
  37. Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮
  38. SetButtonValue(clickedButton);
  39. e.Handled = true;
  40. }
  41. }
  42. private void Window_Deactivated(object sender, EventArgs e)
  43. {
  44. try
  45. {
  46. this.DialogResult = false;
  47. this.Close();
  48. }
  49. catch (Exception)
  50. {
  51. }
  52. // Close the window when it loses focus
  53. }
  54. private void Button_PreviewTouchDown(object sender, TouchEventArgs e)
  55. //{
  56. // private void ButtonGrid_Click(object sender, RoutedEventArgs e)
  57. {
  58. Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮
  59. SetButtonValue(clickedButton);
  60. e.Handled = true;
  61. }
  62. private void Button_PreviewTouchUp(object sender, TouchEventArgs e)
  63. //{
  64. // private void ButtonGrid_Click(object sender, RoutedEventArgs e)
  65. {
  66. Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮
  67. SetButtonValue(clickedButton);
  68. e.Handled = true;
  69. }
  70. private void Button_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  71. {
  72. if (e.StylusDevice != null)
  73. {
  74. e.Handled = true;
  75. }
  76. else
  77. {
  78. Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮
  79. SetButtonValue(clickedButton);
  80. e.Handled = true;
  81. }
  82. }
  83. public bool IsFristClick { get; set; } = true;
  84. private void SetButtonValue(Button clickedButton)
  85. {
  86. if ((String)clickedButton.Content == "Clear")
  87. {
  88. tbValue.Text = "";
  89. }
  90. else if ((String)clickedButton.Content == "DEL")
  91. {
  92. if (tbValue.Text.Length > 0)
  93. {
  94. tbValue.SelectionStart = tbValue.SelectionStart == 0 ? tbValue.Text.Length : tbValue.SelectionStart;
  95. if (tbValue.Text.Length > tbValue.SelectionStart)
  96. {
  97. var selectionIndex = tbValue.SelectionStart;
  98. if (tbValue.SelectionStart > 0)
  99. {
  100. tbValue.Text = tbValue.Text.Remove(tbValue.SelectionStart - 1, 1);
  101. }
  102. tbValue.SelectionStart = selectionIndex > 0 ? selectionIndex - 1 : 0;
  103. }
  104. else
  105. {
  106. tbValue.Text = tbValue.Text.Substring(0, tbValue.Text.Length - 1);
  107. tbValue.SelectionStart = tbValue.Text.Length;
  108. }
  109. }
  110. }
  111. else if ((String)clickedButton.Content.ToString().ToLower() == "Space".ToLower())
  112. {
  113. tbValue.Text += " ";
  114. tbValue.SelectionStart = tbValue.Text.Length;
  115. }
  116. else if ((String)clickedButton.Content == "OK")
  117. {
  118. if (tbValue.Text == "") { valueString = " "; }
  119. else
  120. {
  121. valueString = tbValue.Text;
  122. }
  123. this.DialogResult = true;
  124. this.Close();
  125. }
  126. else if ((String)clickedButton.Content == "Cancel")
  127. {
  128. this.DialogResult = false;
  129. this.Close();
  130. }
  131. else if ((String)clickedButton.Content == "A/a")
  132. {
  133. int count = ButtonGrid.Children.Count;
  134. for (int i = 0; i < count; i++)//add yujiao 2021/10/25 添加特殊字符
  135. {
  136. Button buttonTemp = ButtonGrid.Children[i] as Button;
  137. String contentTemp = buttonTemp.Content as String;
  138. var a = contentTemp[0];
  139. switch (i)
  140. {
  141. case 0:
  142. buttonTemp.Content = contentTemp[0] > 47 ? "!" : "1";
  143. break;
  144. case 1:
  145. buttonTemp.Content = contentTemp[0] < 57 ? "@" : "2";
  146. break;
  147. case 2:
  148. buttonTemp.Content = contentTemp[0] > 47 ? "#" : "3";
  149. break;
  150. case 3:
  151. buttonTemp.Content = contentTemp[0] > 47 ? "$" : "4";
  152. break;
  153. case 4:
  154. buttonTemp.Content = contentTemp[0] > 47 ? "%" : "5";
  155. break;
  156. case 5:
  157. buttonTemp.Content = contentTemp[0] < 57 ? "^" : "6";
  158. break;
  159. case 6:
  160. buttonTemp.Content = contentTemp[0] > 47 ? "&" : "7";
  161. break;
  162. case 7:
  163. buttonTemp.Content = contentTemp[0] > 47 ? "*" : "8";
  164. break;
  165. case 8:
  166. buttonTemp.Content = contentTemp[0] < 58 ? "_" : "9";
  167. break;
  168. case 9:
  169. buttonTemp.Content = contentTemp[0] > 47 ? "," : "0";
  170. break;
  171. case 29:
  172. buttonTemp.Content = contentTemp[0] < 58 ? ":" : "-";
  173. break;
  174. case 37:
  175. buttonTemp.Content = contentTemp[0] > 82 ? "." : "Space";
  176. break;
  177. //default:
  178. }
  179. }
  180. for (int i = 10; i < count - 6; i++)
  181. {
  182. Button buttonTemp = ButtonGrid.Children[i] as Button;
  183. String contentTemp = buttonTemp.Content as String;
  184. buttonTemp.Content = contentTemp[0] > 90 ? contentTemp.ToUpper() : contentTemp.ToLower();
  185. }
  186. }
  187. else
  188. {
  189. if (IsFristClick)
  190. {
  191. IsFristClick = false;
  192. tbValue.Text = "";
  193. }
  194. var startIndex = tbValue.SelectionStart;
  195. tbValue.Text = tbValue.Text.Insert(startIndex, (String)clickedButton.Content);
  196. tbValue.SelectionStart = startIndex + 1;
  197. //tbValue.Text += (String)clickedButton.Content;
  198. }
  199. }
  200. }
  201. }