|  |  |  | using DyeingComputer.KEY; | 
					
						
							|  |  |  | using DyeingComputer.ViewModel; | 
					
						
							|  |  |  | using System; | 
					
						
							|  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  | using System.Linq; | 
					
						
							|  |  |  | using System.Net; | 
					
						
							|  |  |  | using System.Security.Cryptography; | 
					
						
							|  |  |  | using System.Text; | 
					
						
							|  |  |  | 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.Animation; | 
					
						
							|  |  |  | using System.Windows.Media.Imaging; | 
					
						
							|  |  |  | using System.Windows.Navigation; | 
					
						
							|  |  |  | using System.Windows.Shapes; | 
					
						
							|  |  |  | using static DyeingComputer.UserClass.SqliteHelper; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace DyeingComputer.View | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /// <summary>
 | 
					
						
							|  |  |  |     /// InOutView.xaml 的交互逻辑
 | 
					
						
							|  |  |  |     /// </summary>
 | 
					
						
							|  |  |  |     public partial class InOutView : UserControl | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         public InOutView() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             InitializeComponent(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         string ID; | 
					
						
							|  |  |  |         private TextBox currentTextBox; | 
					
						
							|  |  |  |         private TouchKeyboardNumeral numeralKeyboard; | 
					
						
							|  |  |  |         // private SQLiteHelper SQLiteHelpers = null;  //定义数据库
 | 
					
						
							|  |  |  |         //private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\800COMPUTER.db";  //数据库路径
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void Grid_D_SelectionChanged(object sender, SelectionChangedEventArgs e) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             int rownum = Grid_D.SelectedIndex;//获取鼠标选中行并定义变量
 | 
					
						
							|  |  |  |             if (rownum != -1)//判断鼠标定位是否有效
 | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ID = (Grid_D.Columns[0].GetCellContent(Grid_D.Items[rownum]) as TextBlock).Text;//定位第0列,
 | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         private void Grid_A_SelectionChanged(object sender, SelectionChangedEventArgs e) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             int rownum = Grid_A.SelectedIndex;//获取鼠标选中行并定义变量
 | 
					
						
							|  |  |  |             if (rownum != -1)//判断鼠标定位是否有效
 | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 ID = (Grid_A.Columns[0].GetCellContent(Grid_A.Items[rownum]) as TextBlock).Text;//定位第0列,
 | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         private void Grid_M_SelectionChanged(object sender, SelectionChangedEventArgs e) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void Grid_D_BeginningEdit(object sender, DataGridBeginningEditEventArgs e) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             MainWindowViewModel.D_view = false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         private void Grid_D_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             currentTextBox = e.EditingElement as TextBox; | 
					
						
							|  |  |  |             if (numeralKeyboard == null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 numeralKeyboard = new TouchKeyboardNumeral(); | 
					
						
							|  |  |  |                 numeralKeyboard.KeyPressed += NumeralKeyboard_KeyPressed; | 
					
						
							|  |  |  |                 numeralKeyboard.Closed += (s, args) => { numeralKeyboard = null; }; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             // 显示键盘
 | 
					
						
							|  |  |  |             numeralKeyboard.Show(); | 
					
						
							|  |  |  |             // 定位键盘位置(在主窗口下方)
 | 
					
						
							|  |  |  |             UpdateKeyboardPosition(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         private void Grid_D_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             string newValue = (e.EditingElement as TextBox).Text;//获得输入单元格信息
 | 
					
						
							|  |  |  |             if (newValue.Count() == 4) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 Dictionary<string, object> datagrid_v = new Dictionary<string, object>();//缓存函数
 | 
					
						
							|  |  |  |                 datagrid_v.Add("PLC", newValue); | 
					
						
							|  |  |  |                 // SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
 | 
					
						
							|  |  |  |                 // SQLiteHelpers.Open();  //打开数据库
 | 
					
						
							|  |  |  |                 MainWindow.SQLiteHelpers.Update("IOName", datagrid_v, "ID ='" + ID + "'", null);//更新
 | 
					
						
							|  |  |  |                                                                                                 //SQLiteHelpers.Close();//关闭数据库
 | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             MainWindowViewModel.SQL_data();//重新获得io表
 | 
					
						
							|  |  |  |             MainWindowViewModel.D_view = true; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         private void Grid_A_BeginningEdit(object sender, DataGridBeginningEditEventArgs e) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             MainWindowViewModel.A_view = false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         private void Grid_A_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             currentTextBox = e.EditingElement as TextBox; | 
					
						
							|  |  |  |             if (numeralKeyboard == null) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 numeralKeyboard = new TouchKeyboardNumeral(); | 
					
						
							|  |  |  |                 numeralKeyboard.KeyPressed += NumeralKeyboard_KeyPressed; | 
					
						
							|  |  |  |                 numeralKeyboard.Closed += (s, args) => { numeralKeyboard = null; }; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             // 显示键盘
 | 
					
						
							|  |  |  |             numeralKeyboard.Show(); | 
					
						
							|  |  |  |             // 定位键盘位置(在主窗口下方)
 | 
					
						
							|  |  |  |             UpdateKeyboardPosition(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         private void Grid_A_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             string newValue = (e.EditingElement as TextBox).Text;//获得输入单元格信息
 | 
					
						
							|  |  |  |             if (newValue.Count() == 4) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 Dictionary<string, object> datagrid_v = new Dictionary<string, object>();//缓存函数
 | 
					
						
							|  |  |  |                 datagrid_v.Add("PLC", newValue); | 
					
						
							|  |  |  |                 //SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
 | 
					
						
							|  |  |  |                 //SQLiteHelpers.Open();  //打开数据库
 | 
					
						
							|  |  |  |                 MainWindow.SQLiteHelpers.Update("IOName", datagrid_v, "ID ='" + ID + "'", null);//更新                                                                                            
 | 
					
						
							|  |  |  |                                                                                                 //SQLiteHelpers.Close();//关闭数据库
 | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             MainWindowViewModel.SQL_data();//重新获得io表
 | 
					
						
							|  |  |  |             MainWindowViewModel.A_view = true; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // 更新键盘位置
 | 
					
						
							|  |  |  |         private void UpdateKeyboardPosition() | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             if (numeralKeyboard == null) return; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // 获取主窗口的位置
 | 
					
						
							|  |  |  |             var mainWindowWidth = this.Width; | 
					
						
							|  |  |  |             var mainWindowHeight = this.Height; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // 计算键盘位置(主窗口底部中央)
 | 
					
						
							|  |  |  |             numeralKeyboard.Left = (mainWindowWidth - numeralKeyboard.Width) / 2; | 
					
						
							|  |  |  |             numeralKeyboard.Top = mainWindowHeight / 2; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         // 键盘按键事件处理
 | 
					
						
							|  |  |  |         private void NumeralKeyboard_KeyPressed(object sender, TouchKeyboardNumeral.KeyPressedEventArgs e) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             switch (e.KeyType) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 /*   case KeyType.Character: | 
					
						
							|  |  |  |                        currentTextBox.Text += e.KeyValue; | 
					
						
							|  |  |  |                        break; | 
					
						
							|  |  |  |                    case KeyType.Backspace: | 
					
						
							|  |  |  |                        if (currentTextBox.Text.Length > 0) | 
					
						
							|  |  |  |                        { | 
					
						
							|  |  |  |                            currentTextBox.Text = currentTextBox.Text.Substring(0, currentTextBox.Text.Length - 1); | 
					
						
							|  |  |  |                        } | 
					
						
							|  |  |  |                        break;*/ | 
					
						
							|  |  |  |                 case KeyType.Enter: | 
					
						
							|  |  |  |                     // 回车键处理
 | 
					
						
							|  |  |  |                     if (!String.IsNullOrEmpty(e.KeyValue)) | 
					
						
							|  |  |  |                     {  | 
					
						
							|  |  |  |                         currentTextBox.Text = e.KeyValue; | 
					
						
							|  |  |  |                     } | 
					
						
							|  |  |  |                     numeralKeyboard.Close(); | 
					
						
							|  |  |  |                     break; | 
					
						
							|  |  |  |                 case KeyType.Hide: | 
					
						
							|  |  |  |                     // 隐藏键盘处理
 | 
					
						
							|  |  |  |                     numeralKeyboard.Close(); | 
					
						
							|  |  |  |                     break; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             Grid_D.CommitEdit(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             Grid_A.CommitEdit(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |