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