using System; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Input; namespace MECF.Framework.UI.Client.CenterViews.Dialogs { public partial class FullKeyboard : Window { //public FullKeyboard() //{ // InitializeComponent(); //} private String valueString; public String ValueString { get { return valueString; } } public FullKeyboard(String inputTitle, String inputvalue) { InitializeComponent(); FullKeyboardTitle.Text = inputTitle; tbValue.Text = inputvalue; // tbValue.SelectionStart = inputvalue.Length; valueString = inputvalue; } //通过判断按钮的content属性来做对应处理,以简化大量按钮的编程 private void Button_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (e.StylusDevice != null) { e.Handled = true; } else { Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮 SetButtonValue(clickedButton); e.Handled = true; } } private void Button_PreviewTouchDown(object sender, TouchEventArgs e) //{ // private void ButtonGrid_Click(object sender, RoutedEventArgs e) { Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮 SetButtonValue(clickedButton); e.Handled = true; } private void Button_PreviewTouchUp(object sender, TouchEventArgs e) //{ // private void ButtonGrid_Click(object sender, RoutedEventArgs e) { Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮 SetButtonValue(clickedButton); e.Handled = true; } private void Button_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (e.StylusDevice != null) { e.Handled = true; } else { Button clickedButton = (Button)sender; //获取click事件触发源,即按了的按钮 SetButtonValue(clickedButton); e.Handled = true; } } public bool IsFristClick { get; set; } = true; private void SetButtonValue(Button clickedButton) { if ((String)clickedButton.Content == "Clear") { tbValue.Text = ""; } else if ((String)clickedButton.Content == "DEL") { if (tbValue.Text.Length > 0) { tbValue.SelectionStart = tbValue.SelectionStart == 0 ? tbValue.Text.Length : tbValue.SelectionStart; if (tbValue.Text.Length > tbValue.SelectionStart) { var selectionIndex = tbValue.SelectionStart; if (tbValue.SelectionStart > 0) { tbValue.Text = tbValue.Text.Remove(tbValue.SelectionStart - 1, 1); } tbValue.SelectionStart = selectionIndex > 0 ? selectionIndex - 1 : 0; } else { tbValue.Text = tbValue.Text.Substring(0, tbValue.Text.Length - 1); tbValue.SelectionStart = tbValue.Text.Length; } } } else if ((String)clickedButton.Content.ToString().ToLower() == "Space".ToLower()) { tbValue.Text += " "; tbValue.SelectionStart = tbValue.Text.Length; } else if ((String)clickedButton.Content == "OK") { if (tbValue.Text == "") { valueString = " "; } else { valueString = tbValue.Text; } this.DialogResult = true; this.Close(); } else if ((String)clickedButton.Content == "Cancel") { this.DialogResult = false; this.Close(); } else if ((String)clickedButton.Content == "A/a") { int count = ButtonGrid.Children.Count; for (int i = 0; i < count; i++)//add yujiao 2021/10/25 添加特殊字符 { Button buttonTemp = ButtonGrid.Children[i] as Button; String contentTemp = buttonTemp.Content as String; var a = contentTemp[0]; switch (i) { case 0: buttonTemp.Content = contentTemp[0] > 47 ? "!" : "1"; break; case 1: buttonTemp.Content = contentTemp[0] < 57 ? "@" : "2"; break; case 2: buttonTemp.Content = contentTemp[0] > 47 ? "#" : "3"; break; case 3: buttonTemp.Content = contentTemp[0] > 47 ? "$" : "4"; break; case 4: buttonTemp.Content = contentTemp[0] > 47 ? "%" : "5"; break; case 5: buttonTemp.Content = contentTemp[0] < 57 ? "^" : "6"; break; case 6: buttonTemp.Content = contentTemp[0] > 47 ? "&" : "7"; break; case 7: buttonTemp.Content = contentTemp[0] > 47 ? "*" : "8"; break; case 8: buttonTemp.Content = contentTemp[0] < 58 ? "_" : "9"; break; case 9: buttonTemp.Content = contentTemp[0] > 47 ? "," : "0"; break; case 29: buttonTemp.Content = contentTemp[0] < 58 ? ":" : "-"; break; case 37: buttonTemp.Content = contentTemp[0] > 82 ? "." : "Space"; break; //default: } } for (int i = 10; i < count - 6; i++) { Button buttonTemp = ButtonGrid.Children[i] as Button; String contentTemp = buttonTemp.Content as String; buttonTemp.Content = contentTemp[0] > 90 ? contentTemp.ToUpper() : contentTemp.ToLower(); } } else { if (IsFristClick) { IsFristClick = false; tbValue.Text = ""; } var startIndex = tbValue.SelectionStart; tbValue.Text = tbValue.Text.Insert(startIndex, (String)clickedButton.Content); tbValue.SelectionStart = startIndex + 1; //tbValue.Text += (String)clickedButton.Content; } } } }