FullKeyboard.xaml.cs 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  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 Button_PreviewTouchDown(object sender, TouchEventArgs e)
  43. //{
  44. // private void ButtonGrid_Click(object sender, RoutedEventArgs e)
  45. {
  46. Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮
  47. SetButtonValue(clickedButton);
  48. e.Handled = true;
  49. }
  50. private void Button_PreviewTouchUp(object sender, TouchEventArgs e)
  51. //{
  52. // private void ButtonGrid_Click(object sender, RoutedEventArgs e)
  53. {
  54. Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮
  55. SetButtonValue(clickedButton);
  56. e.Handled = true;
  57. }
  58. private void Button_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
  59. {
  60. if (e.StylusDevice != null)
  61. {
  62. e.Handled = true;
  63. }
  64. else
  65. {
  66. Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮
  67. SetButtonValue(clickedButton);
  68. e.Handled = true;
  69. }
  70. }
  71. public bool IsFristClick { get; set; } = true;
  72. private void SetButtonValue(Button clickedButton)
  73. {
  74. if ((String)clickedButton.Content == "Clear")
  75. {
  76. tbValue.Text = "";
  77. }
  78. else if ((String)clickedButton.Content == "DEL")
  79. {
  80. if (tbValue.Text.Length > 0)
  81. {
  82. tbValue.SelectionStart = tbValue.SelectionStart == 0 ? tbValue.Text.Length : tbValue.SelectionStart;
  83. if (tbValue.Text.Length > tbValue.SelectionStart)
  84. {
  85. var selectionIndex = tbValue.SelectionStart;
  86. if (tbValue.SelectionStart > 0)
  87. {
  88. tbValue.Text = tbValue.Text.Remove(tbValue.SelectionStart - 1, 1);
  89. }
  90. tbValue.SelectionStart = selectionIndex > 0 ? selectionIndex - 1 : 0;
  91. }
  92. else
  93. {
  94. tbValue.Text = tbValue.Text.Substring(0, tbValue.Text.Length - 1);
  95. tbValue.SelectionStart = tbValue.Text.Length;
  96. }
  97. }
  98. }
  99. else if ((String)clickedButton.Content.ToString().ToLower() == "Space".ToLower())
  100. {
  101. tbValue.Text += " ";
  102. tbValue.SelectionStart = tbValue.Text.Length;
  103. }
  104. else if ((String)clickedButton.Content == "OK")
  105. {
  106. if (tbValue.Text == "") { valueString = " "; }
  107. else
  108. {
  109. valueString = tbValue.Text;
  110. }
  111. this.DialogResult = true;
  112. this.Close();
  113. }
  114. else if ((String)clickedButton.Content == "Cancel")
  115. {
  116. this.DialogResult = false;
  117. this.Close();
  118. }
  119. else if ((String)clickedButton.Content == "A/a")
  120. {
  121. int count = ButtonGrid.Children.Count;
  122. for (int i = 0; i < count; i++)//add yujiao 2021/10/25 添加特殊字符
  123. {
  124. Button buttonTemp = ButtonGrid.Children[i] as Button;
  125. String contentTemp = buttonTemp.Content as String;
  126. var a = contentTemp[0];
  127. switch (i)
  128. {
  129. case 0:
  130. buttonTemp.Content = contentTemp[0] > 47 ? "!" : "1";
  131. break;
  132. case 1:
  133. buttonTemp.Content = contentTemp[0] < 57 ? "@" : "2";
  134. break;
  135. case 2:
  136. buttonTemp.Content = contentTemp[0] > 47 ? "#" : "3";
  137. break;
  138. case 3:
  139. buttonTemp.Content = contentTemp[0] > 47 ? "$" : "4";
  140. break;
  141. case 4:
  142. buttonTemp.Content = contentTemp[0] > 47 ? "%" : "5";
  143. break;
  144. case 5:
  145. buttonTemp.Content = contentTemp[0] < 57 ? "^" : "6";
  146. break;
  147. case 6:
  148. buttonTemp.Content = contentTemp[0] > 47 ? "&" : "7";
  149. break;
  150. case 7:
  151. buttonTemp.Content = contentTemp[0] > 47 ? "*" : "8";
  152. break;
  153. case 8:
  154. buttonTemp.Content = contentTemp[0] < 58 ? "_" : "9";
  155. break;
  156. case 9:
  157. buttonTemp.Content = contentTemp[0] > 47 ? "," : "0";
  158. break;
  159. case 29:
  160. buttonTemp.Content = contentTemp[0] < 58 ? ":" : "-";
  161. break;
  162. case 37:
  163. buttonTemp.Content = contentTemp[0] > 82 ? "." : "Space";
  164. break;
  165. //default:
  166. }
  167. }
  168. for (int i = 10; i < count - 6; i++)
  169. {
  170. Button buttonTemp = ButtonGrid.Children[i] as Button;
  171. String contentTemp = buttonTemp.Content as String;
  172. buttonTemp.Content = contentTemp[0] > 90 ? contentTemp.ToUpper() : contentTemp.ToLower();
  173. }
  174. }
  175. else
  176. {
  177. if (IsFristClick)
  178. {
  179. IsFristClick = false;
  180. tbValue.Text = "";
  181. }
  182. var startIndex = tbValue.SelectionStart;
  183. tbValue.Text = tbValue.Text.Insert(startIndex, (String)clickedButton.Content);
  184. tbValue.SelectionStart = startIndex + 1;
  185. //tbValue.Text += (String)clickedButton.Content;
  186. }
  187. }
  188. }
  189. }