using DataEntity; using DataEntity.Share; using DataRWDAL; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using XCommon.Log; using XCore; using XHandler.Class.DataEx; using XHandler.View.Com; using XImagingXhandler.XDAL; namespace XHandler.View.MethodProperty { /// /// 超声探测子页面 /// public partial class UltrasonicChildProperty : System.Windows.Controls.UserControl { #region 变量 private AspirateBll aspirateBll = new AspirateBll(); private int mark = 0; public MethodUltrasonicChild m_ultrasonicData = null; #endregion #region 构造函数 public UltrasonicChildProperty(MethodUltrasonicChild ultrasonicData, bool isFromChoice = false) { mark = 0; InitializeComponent(); m_ultrasonicData = ultrasonicData; #region 台面位置 List list = new List(); List lattices = DataModule.getInstance().GetLattices(); for (int i = 0; i < Shared.SoftwareInformation.columns; i++) { for (int j = 0; j < Shared.SoftwareInformation.rows; j++) { int tmp = i * Shared.SoftwareInformation.rows + j; Lattice latt = lattices[tmp]; if (latt.is_trash == 1) continue; list.Add(latt.lattice_num); } } list.Insert(0, Properties.Resources.strPleaseSelect); // 请选择 comboboxTablePos.ItemsSource = list; if (isFromChoice) { // 挑选转运 comboboxTablePos.IsEnabled = false; } #endregion // 获取耗材类型下拉选择数据 ObservableCollection labwareList = GenerateLabwareType(); comboboxLabwareType.ItemsSource = labwareList; // 圆形皿多探测点位DataGrid dgPointListData.ItemsSource = m_ultrasonicData.pointList; this.DataContext = m_ultrasonicData; } #endregion #region 页面初始化 private void UserControl_Loaded(object sender, RoutedEventArgs e) { mark += 1; try { if (mark > 1) { return; } if (m_ultrasonicData == null) { m_ultrasonicData = new MethodUltrasonicChild(); return; } // 台面位置 if (!string.IsNullOrEmpty(m_ultrasonicData.positionValue)) { comboboxTablePos.SelectedItem = m_ultrasonicData.positionText; } else { comboboxTablePos.SelectedIndex = 0; } // 耗材名称 comboboxLabwareType.SelectedValue = m_ultrasonicData.labwareValue; if (m_ultrasonicData.pointList == null) { // 构建圆形皿默认三个坐标 m_ultrasonicData.pointList = GenerateDefaultPointList(); } tbxXAxis.Text = m_ultrasonicData.xDishAxisVal.ToString(); tbxYAxis.Text = m_ultrasonicData.yDishAxisVal.ToString(); tbxRowNum.Text = m_ultrasonicData.rowNum.ToString(); tbxColumnNum.Text = m_ultrasonicData.columnNum.ToString(); tbxCloseTop.Text = m_ultrasonicData.closeTopVal.ToString(); tbxCloseLeft.Text = m_ultrasonicData.closeLeftVal.ToString(); tbxDistanceOfX.Text = m_ultrasonicData.xAxisVal.ToString(); tbxDistanceOfY.Text = m_ultrasonicData.yAxisVal.ToString(); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 台面位置选择变更 private void comboboxTablePos_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (comboboxTablePos.SelectedIndex < 0) { return; } else if (comboboxTablePos.SelectedIndex == 0) { m_ultrasonicData.positionValue = ""; m_ultrasonicData.positionText = ""; return; } else { // 根据所选的台面加载圆皿中心坐标 Lattice lattice = null; TabletopTemplate tabletopTemplate = TabletopTemplateDB.GetCurrentAppTabletopTemplateCollectionFromdb(); //增加台面模板判断 if (tabletopTemplate == null) { lattice = LatticeDB.GetLatticeDataByIdFromdb((string)comboboxTablePos.SelectedItem, Convert.ToInt32(Shared.ChanelArmId), Shared.SoftwareInformation.software_device_number); } else { lattice = LatticeDB.GetLatticeDataByLatticeNumAndTempIdFromdb((string)comboboxTablePos.SelectedItem, Convert.ToInt32(Shared.DeviceArmList.SingleOrDefault(x => x.arm_type.Equals(1)).device_arm_id), Shared.SoftwareInformation.software_device_number, tabletopTemplate.tabletopid); } tbxXAxis.Text = ((double)lattice.lattice_X + ((double)lattice.lattice_length / (double)2)).ToString("0.0"); tbxYAxis.Text = ((double)lattice.lattice_Y + ((double)lattice.lattice_width / (double)2)).ToString("0.0"); m_ultrasonicData.positionText = ((string)comboboxTablePos.SelectedItem).ToString(); m_ultrasonicData.positionValue = ((string)comboboxTablePos.SelectedItem).ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 耗材名称选择变更事件 private void comboboxLabwareType_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (comboboxLabwareType.SelectedIndex == 0) { bdDish.Visibility = Visibility.Visible; bdLabware.Visibility = Visibility.Collapsed; } else if (comboboxLabwareType.SelectedIndex == 1) { bdDish.Visibility = Visibility.Collapsed; bdLabware.Visibility = Visibility.Visible; } if (m_ultrasonicData != null) { m_ultrasonicData.labwareValue = ((DropdownName)comboboxLabwareType.SelectedItem).dropdown_id.ToString(); m_ultrasonicData.labwareText = ((DropdownName)comboboxLabwareType.SelectedItem).dropdown_name.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 圆形皿相关 #region X轴 private void tbxXAxis_TextChanged(object sender, TextChangedEventArgs e) { try { if (m_ultrasonicData != null) { m_ultrasonicData.xDishAxisVal = Convert.ToDouble(tbxXAxis.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region Y轴 private void tbxYAxis_TextChanged(object sender, TextChangedEventArgs e) { try { if (m_ultrasonicData != null) { m_ultrasonicData.yDishAxisVal = Convert.ToDouble(tbxYAxis.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 点位设置 新增 private void btnAdd_Click(object sender, RoutedEventArgs e) { try { DropdownName dropdownName = new DropdownName(); dropdownName.index_id = m_ultrasonicData.pointList.Count + 1; dropdownName.dropdown_id = "0"; dropdownName.dropdown_name = "0"; m_ultrasonicData.pointList.Add(dropdownName); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 点位设置 删除 private void btnDelete_Click(object sender, RoutedEventArgs e) { try { int SelectedRow = dgPointListData.SelectedIndex;//尝试解析出所选行 if (SelectedRow < 0) { return; } var a = dgPointListData.Columns[0].GetCellContent(dgPointListData.Items[SelectedRow]); List listBtn = ViewCom.GetChildObjects((DependencyObject)a, typeof(System.Windows.Controls.Label)); if (listBtn.Count > 0) { int grd = Convert.ToInt32(listBtn[0].Tag); m_ultrasonicData.pointList.Remove(m_ultrasonicData.pointList.FirstOrDefault(x => x.index_id == grd)); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 点位设置 单元格编辑 private void dgPointListData_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) { try { // 如果点击了放弃按钮或ESC if (e.EditAction == DataGridEditAction.Cancel) { return; } // 获取编辑模式显示的元素,因为使用了模板,因此这里是ContentPresenter类型 ContentPresenter cp = e.EditingElement as ContentPresenter; if (cp != null && VisualTreeHelper.GetChildrenCount(cp) > 0) { // 找到编辑框 System.Windows.Controls.TextBox textBox = VisualTreeHelper.GetChild(cp, 0) as System.Windows.Controls.TextBox; // 如果找到 if (textBox != null) { #region Del //验证输入值 //if (!Consumables.ConsumablesValidationRule.IsPositiveNumber(textBox.Text, out string message)) //{ // textBox.Text = "0"; // lnError.Text = message; // return; //} //else if (!Consumables.ConsumablesValidationRule.IsRange(textBox.Text, 0.0, 1000.0, false, out message)) //{ // textBox.Text = "0"; // lnError.Text = message; // return; //} //else //{ // lnError.Text = ""; //} //if (!verificationTextBox.VerificateTextBox(textBox, 11)) //{ // textBox.BorderThickness = new Thickness(2); // textBox.BorderBrush = Brushes.Red; // return; //} #endregion int id = Convert.ToInt32(textBox.Tag); var pointItem = m_ultrasonicData.pointList.FirstOrDefault(x => x.index_id == id); DropdownName dropdown = new DropdownName(); dropdown.index_id = id; if (textBox.Name == "tbXoffset") { dropdown.dropdown_id = textBox.Text; pointItem.dropdown_id = textBox.Text; } else { dropdown.dropdown_name = textBox.Text; pointItem.dropdown_name = textBox.Text; } var dataGrid = sender as System.Windows.Controls.DataGrid; dataGrid.BeginEdit(); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #endregion #region 非圆皿相关 #region 行数变更事件 private void tbxRowNum_TextChanged(object sender, TextChangedEventArgs e) { try { if (m_ultrasonicData != null) { m_ultrasonicData.rowNum = Convert.ToInt32(tbxRowNum.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 列数变更事件 private void tbxColumnNum_TextChanged(object sender, TextChangedEventArgs e) { try { if (m_ultrasonicData != null) { m_ultrasonicData.columnNum = Convert.ToInt32(tbxColumnNum.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 距顶边变更事件 private void tbxCloseTop_TextChanged(object sender, TextChangedEventArgs e) { try { if (m_ultrasonicData != null) { m_ultrasonicData.closeTopVal = Convert.ToDouble(tbxCloseTop.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 距左边 private void tbxCloseLeft_TextChanged(object sender, TextChangedEventArgs e) { try { if (m_ultrasonicData != null) { m_ultrasonicData.closeLeftVal = Convert.ToDouble(tbxCloseLeft.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region X间距 private void tbxDistanceOfX_TextChanged(object sender, TextChangedEventArgs e) { try { if (m_ultrasonicData != null) { m_ultrasonicData.xAxisVal = Convert.ToDouble(tbxDistanceOfX.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region Y间距 private void tbxDistanceOfY_TextChanged(object sender, TextChangedEventArgs e) { try { if (m_ultrasonicData != null) { m_ultrasonicData.yAxisVal = Convert.ToDouble(tbxDistanceOfY.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #endregion #region 私有方法 #region 构建耗材类型下拉选择数据 private ObservableCollection GenerateLabwareType() { ObservableCollection dropdownNames = new ObservableCollection(); DropdownName dropdownName = new DropdownName(); dropdownName.dropdown_id = "1"; dropdownName.dropdown_name = "圆形皿"; dropdownNames.Add(dropdownName); dropdownName = new DropdownName(); dropdownName.dropdown_id = "2"; dropdownName.dropdown_name = "非圆形皿"; dropdownNames.Add(dropdownName); return dropdownNames; } #endregion #region 构建圆形皿默认三个坐标 private ObservableCollection GenerateDefaultPointList() { ObservableCollection points = new ObservableCollection(); DropdownName point1 = new DropdownName(); point1.dropdown_id = "-10"; point1.dropdown_name = "0"; points.Add(point1); point1 = new DropdownName(); point1.dropdown_id = "0"; point1.dropdown_name = "0"; points.Add(point1); point1 = new DropdownName(); point1.dropdown_id = "10"; point1.dropdown_name = "0"; points.Add(point1); return points; } #endregion #endregion } }