| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 | 
							- using Caliburn.Micro;
 
- using MECF.Framework.UI.Client.CenterViews.Dialogs;
 
- using MECF.Framework.UI.Client.ClientBase;
 
- using OpenSEMI.ClientBase;
 
- using OpenSEMI.Ctrlib.Controls;
 
- 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.Input;
 
- using TextBox2 = OpenSEMI.Ctrlib.Controls.TextBoxEx;
 
- namespace MECF.Framework.UI.Client.Themes.lightgreen
 
- {
 
-     public partial class TextBoxEx2 : ResourceDictionary
 
-     {
 
-         private static Regex RegNumber = new Regex("^[0-9]+$");
 
-         private static Regex RegNumberSign = new Regex("^[+-]?[0-9]+$");
 
-         private static Regex RegDecimal = new Regex("^[0-9]+[.]?[0-9]+$");
 
-         private static Regex RegDecimalSign = new Regex("^[+-]?[0-9]+[.]?[0-9]+$"); //等价于^[+-]?\d+[.]?\d+$
 
-         private static Regex RegEmail = new Regex("^[\\w-]+@[\\w-]+\\.(com|net|org|edu|mil|tv|biz|info)$");
 
-         /// <summary>
 
-         /// 是否数字字符串
 
-         /// </summary>
 
-         /// <param name="inputData">输入字符串</param>
 
-         /// <returns></returns>
 
-         public static bool IsNumber(string inputData)
 
-         {
 
-             Match m = RegNumber.Match(inputData);
 
-             return m.Success;
 
-         }
 
-         /// <summary>
 
-         /// 是否数字字符串 可带正负号
 
-         /// </summary>
 
-         /// <param name="inputData">输入字符串</param>
 
-         /// <returns></returns>
 
-         public static bool IsNumberSign(string inputData)
 
-         {
 
-             Match m = RegNumberSign.Match(inputData);
 
-             return m.Success;
 
-         }
 
-         /// <summary>
 
-         /// 是否是浮点数
 
-         /// </summary>
 
-         /// <param name="inputData">输入字符串</param>
 
-         /// <returns></returns>
 
-         public static bool IsDecimal(string inputData)
 
-         {
 
-             Match m = RegDecimal.Match(inputData);
 
-             return m.Success;
 
-         }
 
-         /// <summary>
 
-         /// 是否是浮点数 可带正负号
 
-         /// </summary>
 
-         /// <param name="inputData">输入字符串</param>
 
-         /// <returns></returns>
 
-         public static bool IsDecimalSign(string inputData)
 
-         {
 
-             Match m = RegDecimalSign.Match(inputData);
 
-             return m.Success;
 
-         }
 
-         public void TextBoxExOnClick(object sender, MouseButtonEventArgs e)
 
-         {
 
-             if (sender is TextBox2)
 
-             {
 
-                 TextBox2 textBox = sender as TextBox2;
 
-                 string strRet = Show(sender, textBox.Text);
 
-                 if (string.IsNullOrEmpty(strRet)) return;
 
-                 if (!CheckEditBoxMode(textBox, strRet))
 
-                 {
 
-                     DialogBox.ShowInfo($"Please enter the corresponding type data {textBox.EditBoxMode.ToString()}");
 
-                     return;
 
-                 }
 
-                 if (!textBox.AllowIsOutOfRangeSaveChange && textBox.IsOutOfRange(double.Parse(strRet)))
 
-                 {
 
-                     DialogBox.ShowInfo($"Out Of Range{textBox.MinValue}-{textBox.MaxValue}");
 
-                     return;
 
-                 }
 
-                 if (textBox.EditBoxMode == EditBoxMode.SignInteger || textBox.EditBoxMode == EditBoxMode.UnSignInteger || textBox.EditBoxMode == EditBoxMode.Decimal || textBox.EditBoxMode == EditBoxMode.UnSignDecimal)
 
-                 {
 
-                     var controlValue = double.Parse(strRet);
 
-                     if (textBox.KeepDecimals != -1)
 
-                     {
 
-                         if (textBox.KeepIntegers != -1)
 
-                         {
 
-                             StringBuilder strFormat = new StringBuilder();
 
-                             for (int i = 0; i < textBox.KeepIntegers; i++)
 
-                             {
 
-                                 strFormat.Append("0");
 
-                             }
 
-                             strFormat.Append(".");
 
-                             for (int i = 0; i < textBox.KeepDecimals; i++)
 
-                             {
 
-                                 strFormat.Append("0");
 
-                             }
 
-                             textBox.Text = controlValue.ToString(strFormat.ToString());
 
-                         }
 
-                         else
 
-                         { textBox.Text = controlValue.ToString($"f{textBox.KeepDecimals}"); }
 
-                     }
 
-                     else
 
-                     {
 
-                         if (textBox.KeepIntegers != -1)
 
-                         {
 
-                             textBox.Text = ((int)controlValue).ToString($"D{textBox.KeepIntegers}");
 
-                         }
 
-                         else
 
-                         { textBox.Text = controlValue.ToString(); }
 
-                     }
 
-                 }
 
-                 else
 
-                 {
 
-                     textBox.Text = strRet;
 
-                 }
 
-             }
 
-         }
 
-         private bool CheckEditBoxMode(TextBox2 boxEx, string value)
 
-         {
 
-             bool modeIsOk = false;
 
-             switch (boxEx.EditBoxMode)
 
-             {
 
-                 case OpenSEMI.Ctrlib.Controls.EditBoxMode.Default:
 
-                 case OpenSEMI.Ctrlib.Controls.EditBoxMode.Email:
 
-                 case OpenSEMI.Ctrlib.Controls.EditBoxMode.Time:
 
-                 case OpenSEMI.Ctrlib.Controls.EditBoxMode.FileName:
 
-                     modeIsOk = true;
 
-                     break;
 
-                 case OpenSEMI.Ctrlib.Controls.EditBoxMode.SignInteger:
 
-                     modeIsOk = IsNumberSign(value);
 
-                     break;
 
-                 case OpenSEMI.Ctrlib.Controls.EditBoxMode.UnSignInteger:
 
-                     modeIsOk = IsNumber(value);
 
-                     break;
 
-                 case OpenSEMI.Ctrlib.Controls.EditBoxMode.Decimal:
 
-                     modeIsOk = IsDecimalSign(value) || IsNumberSign(value);
 
-                     break;
 
-                 case OpenSEMI.Ctrlib.Controls.EditBoxMode.UnSignDecimal:
 
-                     modeIsOk = IsDecimal(value) || IsNumber(value);
 
-                     break;
 
-                 default:
 
-                     break;
 
-             }
 
-             return modeIsOk;
 
-         }
 
-         private string Show(object sender, string strDefaultValue)
 
-         {
 
-             Control control = sender as Control;
 
-             string strRet = string.Empty;
 
-             if (control.Tag != null && control.Tag.ToString().Equals("Number"))
 
-             {
 
-                 var point = control.PointFromScreen(new Point(0, 0));
 
-                 double x = SystemParameters.WorkArea.Width;
 
-                 double y = SystemParameters.WorkArea.Height;
 
-                 NumberKeyboard numberKeyboard = new NumberKeyboard("", strDefaultValue);
 
-                 if (-point.Y + control.ActualHeight + 5 + numberKeyboard.Height < y)
 
-                 {
 
-                     numberKeyboard.Top = -point.Y + control.ActualHeight + 5;
 
-                 }
 
-                 else
 
-                 {
 
-                     numberKeyboard.Top = -point.Y - numberKeyboard.Height - 5;
 
-                 }
 
-                 if (-point.X + numberKeyboard.Width < x)
 
-                 {
 
-                     numberKeyboard.Left = -point.X;
 
-                 }
 
-                 else
 
-                 {
 
-                     numberKeyboard.Left = -point.X - (numberKeyboard.Width - control.ActualWidth);
 
-                 }
 
-                 if ((bool)numberKeyboard.ShowDialog()) strRet = numberKeyboard.ValueString;
 
-             }
 
-             else if (control.Tag != null && control.Tag.ToString().Contains("None"))
 
-             {
 
-                 return string.Empty;
 
-             }
 
-             else
 
-             {
 
-                 FullKeyboard fullKeyboard = new FullKeyboard("", strDefaultValue);
 
-                 var point = control.PointFromScreen(new Point(0, 0));
 
-                 double x = SystemParameters.WorkArea.Width;
 
-                 double y = SystemParameters.WorkArea.Height;
 
-                 if (-point.Y + control.ActualHeight + 5 + fullKeyboard.Height < y)
 
-                 {
 
-                     fullKeyboard.Top = -point.Y + control.ActualHeight + 5;
 
-                 }
 
-                 else
 
-                 {
 
-                     fullKeyboard.Top = -point.Y - fullKeyboard.Height - 5;
 
-                 }
 
-                 if (-point.X + fullKeyboard.Width < x)
 
-                 {
 
-                     fullKeyboard.Left = -point.X;
 
-                 }
 
-                 else
 
-                 {
 
-                     fullKeyboard.Left = -point.X - (fullKeyboard.Width - control.ActualWidth);
 
-                 }
 
-                 if ((bool)fullKeyboard.ShowDialog()) strRet = fullKeyboard.ValueString;
 
-             }
 
-             return strRet;
 
-         }
 
-     }
 
- }
 
 
  |