123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- 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;
- }
- }
- }
- }
|