using OpenSEMI.ClientBase; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace MECF.Framework.UI.Client.CenterViews.Dialogs { /// /// NumberKeyboard.xaml 的交互逻辑 /// public partial class NumberKeyborardNoMinus : Window { //public FullKeyboard() //{ // InitializeComponent(); //} private String valueString; private double _maxValue = double.MaxValue; private double _minValue = double.MinValue; private bool _isValidate; public String ValueString { get { ValueHandler(ref valueString); if (valueString == "") { return "0"; } else { return valueString; } } } public NumberKeyborardNoMinus(String inputTitle, String inputvalue, bool isValidate = false, double maxValue = double.MaxValue, double minValue = 0) { InitializeComponent(); ValueHandler(ref inputvalue); tbValue.Text = inputvalue; valueString = inputvalue; _isValidate = isValidate; _maxValue = maxValue; _minValue = minValue; } private void ValueHandler(ref string inputvalue) { if (!string.IsNullOrEmpty(inputvalue)) { if (Regex.Matches(inputvalue, ":").Count == 0 && inputvalue.Length > 1) { //if(inputvalue.Split('.').Length<=1) double outValue = 0; double.TryParse(inputvalue.ToString(), out outValue); inputvalue = outValue.ToString(); } } } private bool IsFristClick = true; //通过判断按钮的content属性来做对应处理,以简化大量按钮的编程 private void ButtonGrid_Click(object sender, RoutedEventArgs e) { Button clickedButton = (Button)e.OriginalSource; //获取click事件触发源,即按了的按钮 if ((String)clickedButton.Content == "DEL") { if (tbValue.Text.Length > 0) { tbValue.Text = tbValue.Text.Substring(0, tbValue.Text.Length - 1); } } else if ((String)clickedButton.Content == "Clear") { tbValue.Text = ""; } else if ((String)clickedButton.Content == "Cancel") { this.DialogResult = false; this.Close(); } else if ((String)clickedButton.Content == "OK") { valueString = tbValue.Text; if (Regex.Matches(valueString, ":").Count > 0) { var value = Regex.IsMatch(valueString, "[0-9][0-9]:[0-9][0-9]:[0-9][0-9]"); if (!value) { DialogBox.ShowWarning("输入格式不正确"); return; } } double dtempValue; if (double.TryParse(tbValue.Text, out dtempValue)) { if (_isValidate) { if (dtempValue > _maxValue) { DialogBox.ShowWarning($"输入数值超过上限值.{_maxValue}"); return; } if (dtempValue < _minValue) { DialogBox.ShowWarning($"输入数值低于下限值.{_minValue}"); return; } } } this.DialogResult = true; this.Close(); } else if ((String)clickedButton.Content == "-") { if (IsFristClick) { IsFristClick = false; tbValue.Text = ""; } if (tbValue.Text == "") { tbValue.Text += (String)clickedButton.Content; } else { if (tbValue.Text.Substring(0, 1) == "-") { tbValue.Text = tbValue.Text.Substring(1, tbValue.Text.Length - 1); } else { tbValue.Text = $"-{tbValue.Text }"; } } } else if ((String)clickedButton.Content == "A/a") { int count = ButtonGrid.Children.Count; for (int i = 10; i < count - 4; 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 = ""; } tbValue.Text += (String)clickedButton.Content; } } } }