using DyeingComputer.KEY; using DyeingComputer.ViewModel; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.Entity.Core.Common.CommandTrees.ExpressionBuilder; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; 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 { /// /// ParameterSetView.xaml 的交互逻辑 /// public partial class ParameterSetView : UserControl { private TextBox currentTextBox; string ID; private TouchKeyboard Keyboard; public ParameterSetView() { InitializeComponent(); set_sql(); } //private SQLiteHelper SQLiteHelpers = null; //定义数据库 //private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\800COMPUTER.db"; //数据库路径 public void set_sql() { //SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 //SQLiteHelpers.Open(); //打开数据库 MainWindowViewModel.dt_ParameterSet = MainWindow.SQLiteHelpers.ExecuteDataSet("select * from Parameters order by ParameterID asc", null).Tables[0]; //读取计划表写入缓存 if (MainWindowViewModel.dt_ParameterSet.Rows.Count>0) Grid.ItemsSource = MainWindowViewModel.dt_ParameterSet.DefaultView; //转换显示计划表 //SQLiteHelpers.Close(); //关闭连接 } private void Grid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)//数据表输入事件 { string newValue = (e.EditingElement as TextBox).Text;//获得输入单元格信息 Dictionary datagrid_v = new Dictionary();//缓存函数 datagrid_v.Add("Value", newValue); //SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 //SQLiteHelpers.Open(); //打开数据库 MainWindow.SQLiteHelpers.Update("Parameters", datagrid_v, "ParameterID ='" + ID + "'", null);//更新 MainWindowViewModel.dt_ParameterSet = MainWindow.SQLiteHelpers.ExecuteDataSet("select * from Parameters order by ParameterID asc", null).Tables[0]; //读取计划表写入缓存 //SQLiteHelpers.Close();//关闭数据库 MainWindowViewModel.set_ = true; } private void UserControl_Loaded(object sender, RoutedEventArgs e)//打开页面时的操作 { DataGridRow dr = (DataGridRow)Grid.ItemContainerGenerator.ContainerFromIndex(0);//取第0行单元格 DataGridCellsPresenter presenter = GetVisualChild(dr); DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(3); //取第3列每行单元格 cell.Focus(); Grid.SelectedIndex = 0; } public static T GetVisualChild(Visual parent) where T : Visual { T child = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); child = v as T; if (child == null) { child = GetVisualChild(v); } if (child != null) { break; } } return child; } private void Grid_SelectionChanged(object sender, SelectionChangedEventArgs e) { int rownum = Grid.SelectedIndex;//获取鼠标选中行并定义变量 if (rownum != -1)//判断鼠标定位是否有效 { ID = (Grid.Columns[1].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第0列, } } private void Grid_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e) { currentTextBox = e.EditingElement as TextBox; if (Keyboard == null) { Keyboard = new TouchKeyboard(); Keyboard.KeyPressed += Keyboard_KeyPressed; Keyboard.Closed += (s, args) => { Keyboard = null; }; } // 显示键盘 Keyboard.Show(); // 定位键盘位置(在主窗口下方) UpdateKeyboardPosition(); } // 更新键盘位置 private void UpdateKeyboardPosition() { if (Keyboard == null) return; // 获取主窗口的位置 var mainWindowWidth = this.Width; var mainWindowHeight = this.Height; // 计算键盘位置(主窗口底部中央) Keyboard.Left = (mainWindowWidth - Keyboard.Width) / 2; Keyboard.Top = mainWindowHeight - (Keyboard.Height+50); } // 键盘按键事件处理 private void Keyboard_KeyPressed(object sender, TouchKeyboard.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; } Keyboard.Close(); break; case KeyType.Hide: // 隐藏键盘处理 Keyboard.Close(); break; } Grid.CommitEdit(); } } }