using DataEntity.Share; using DataRWDAL; using DataRWDalDrive.DB; using HxEnum; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Windows; using System.Windows.Controls; using XCommon.Log; using XHandler.Class.DataEx; using XHandler.View.Dialog; using XHandler.View.MethodProperty; using XImagingXhandler.XDAL; using XHandler.View.Liquids; using XHandler.Controls; namespace XHandler.View.BacteriaProperty { /// /// 梯度稀释 属性页面 /// public partial class DilutionProperty : UserControl, IMethodProperty,ILiquidObserver,ILatticeObserver { #region 变量 public MethodDilution methodDilution = null; private int mark = 0; private int[] channels = Shared.ChannelsId; #endregion /// /// 构造函数 /// public DilutionProperty(MethodEx method) { InitializeComponent(); #region 臂 // 获取机械臂信息 List armList = DataModule.getInstance().GetDeviceArm(); cbArm.ItemsSource = armList; #endregion #region 获取台面点位 //List lattices = DataModule.getInstance().GetLattices(true); //lattices.Insert(0, new Lattice() { lattice_id = "-1", lattice_num = Properties.Resources.strPleaseSelect }); //comboboxTablePos.ItemsSource = lattices; //comboboxTablePos.SelectedIndex = 0; //comboboxTablePosDilution.ItemsSource = lattices; //comboboxTablePosDilution.SelectedIndex = 0; #endregion #region 液体参数 ObservableCollection liquidTypeList = DataModule.getInstance().GetLiquidTypes(); cbLiquidType.ItemsSource = cbLiquidTypeDilution.ItemsSource = liquidTypeList; ObservableCollection liquidRangeList = DataModule.getInstance().GetLiquidRanges(); List liquidRangeOrderByList = liquidRangeList.OrderBy(m => Convert.ToInt32(m.liquid_range_id)).ToList(); cbLiquidRange.ItemsSource = cbLiquidRangeDilution.ItemsSource = liquidRangeOrderByList; ObservableCollection liquidList = new ObservableCollection(); Liquid liquid = new Liquid(); liquid.liquid_name = Properties.Resources.strPleaseSelect; liquidList.Add(liquid); cbLiquid.ItemsSource = cbLiquidDilution.ItemsSource = liquidList; #endregion #region 稀释方向 ObservableCollection dilutionDirectionList = DataModule.getInstance().GetDilutionDirectionList(); cbDilutionDirection.ItemsSource = dilutionDirectionList; cbDilutionDirection.SelectedValue = EnumManagement.GetEnumValue(DilutionDirectionEnum.LeftToRight).ToString(); #endregion #region 更换Tip ObservableCollection changeTipList = DataModule.getInstance().GetChangeTipList(); cbChangeTips.ItemsSource = cbChangeTipsDilution.ItemsSource = changeTipList; cbChangeTips.SelectedValue = cbChangeTipsDilution.SelectedValue = EnumManagement.GetEnumValue(ChangeTipEnum.NoChange).ToString(); #endregion #region 吸头盒 ObservableCollection tipsList = DataRWDAL.LabwareDB.GetTipLabwareFromdb(); cbTipsType.ItemsSource = tipsList; cbTipsType.SelectedIndex = 0; #endregion #region 混合:加液、取液位置类型 ObservableCollection mixPositionList = DataModule.getInstance().GetDispensePositionType(); cbMixAspiratePosition.ItemsSource = mixPositionList; cbMixDispensePosition.ItemsSource = mixPositionList; #endregion // 命令标签 tbxCommandLabel.Text = method.method_name; //mark = 0; methodDilution = new MethodDilution(); methodDilution.name = method.method_name; methodDilution.label = method.method_name; methodDilution.status = (method.isEnabled == true ? "enable" : "disable"); methodDilution.strIndex = method.strIndex; if (Shared.ChannelCount > 1) { tipsChannel.CanEdit = true; } if (method.tag != null) { methodDilution = (MethodDilution)method.tag; channels = methodDilution.channels; } this.DataContext = methodDilution; } bool isLiquidUpdate = false; /// /// 液体参数变更后,更新节点 /// /// 液体参数管理对象 public void ReceiveAndUpdate(LiquidManagement liquidManagement) { isLiquidUpdate = true; ObservableCollection liquidTypeList = DataModule.getInstance().GetLiquidTypes(); cbLiquidType.ItemsSource = cbLiquidTypeDilution.ItemsSource = liquidTypeList; ObservableCollection liquidRangeList = DataModule.getInstance().GetLiquidRanges(); List liquidRangeOrderByList = liquidRangeList.OrderBy(m => Convert.ToInt32(m.liquid_range_id)).ToList(); cbLiquidRange.ItemsSource = cbLiquidRangeDilution.ItemsSource = liquidRangeOrderByList; cbLiquidType.SelectedIndex = -1; cbLiquidType.SelectedValue = methodDilution.liquidTypeValueGradientDilution; cbLiquidTypeDilution.SelectedIndex= -1; cbLiquidTypeDilution.SelectedValue = methodDilution.liquidTypeValueAddDiluent; cbLiquidRange.SelectedIndex = -1; cbLiquidRange.SelectedValue = methodDilution.liquidRangeValueGradientDilution; cbLiquidRangeDilution.SelectedIndex = -1; cbLiquidRangeDilution.SelectedValue = methodDilution.liquidRangeValueAddDiluent; if (methodDilution.liquidValueGradientDilution == "") { cbLiquid.SelectedIndex = 0; } else { cbLiquid.SelectedValue = methodDilution.liquidValueGradientDilution; } if (methodDilution.liquidValueAddDiluent == "") { cbLiquidDilution.SelectedIndex = 0; } else { cbLiquidDilution.SelectedValue = methodDilution.liquidValueAddDiluent; } } /// /// 实验设计台面耗材位置变更后,更新节点 /// /// public void ReceiveAndUpdate(TestDesign testDesign) { if (testDesign.srcCanvas != null && testDesign.targetCanvas != null) { //判断当前的台面选择是不是来源位置上的,如果是就更新,不是就不更新 if (tBlockTablePos.Text.ToString() == testDesign.srcCanvas.Name) { SetTableName(testDesign.targetCanvas.Name, (Labware)(((ControlLabware)testDesign.targetCanvas.Children[testDesign.targetCanvas.Children.Count - 1]).DataContext)); } else { } } } #region 初始化 /// /// 初始化 /// /// /// private void UserControl_Loaded(object sender, RoutedEventArgs e) { mark += 1; try { if (mark > 1) { return; } if (!string.IsNullOrEmpty(methodDilution.armValue)) { // 机械臂 cbArm.SelectedValue = methodDilution.armValue; // 通道 tipsChannel.SelectedChannels = channels.ToList(); tipsChannel_SelectedChangedEvent(null, null); // 吸头盒 cbTipsType.SelectedValue = methodDilution.labwaretipValue; Labware labware = null; #region 选择目标板 相关 // 板位名 tBlockTablePos.Text = methodDilution.positionTextGradientDilution; // 选中的孔位 tbxWellPositionTips.Text = methodDilution.wellarrayGradientDilution; // 孔位行列设置 labware = DataRWDAL.LabwareDB.GetLabware(methodDilution.labwareValueGradientDilution); wellPlate.Rows = labware.number_row; wellPlate.Columns = labware.number_column; // 体积 tbxWellvolume.Text = methodDilution.volume.ToString(); // 液体类型 cbLiquidType.SelectedValue = methodDilution.liquidTypeValueGradientDilution; // 液体范围 cbLiquidRange.SelectedValue = methodDilution.liquidRangeValueGradientDilution; // 液体 cbLiquid.SelectedValue = methodDilution.liquidValueGradientDilution; cbMixAspiratePosition.SelectedValue = methodDilution.mixAspiratePositionValue; cbMixDispensePosition.SelectedValue = methodDilution.mixDispensePositionValue; // 稀释方向 cbDilutionDirection.SelectedValue = EnumManagement.GetEnumValue(methodDilution.dilutionDirectionValue).ToString(); // 更换TipId cbChangeTips.SelectedValue = methodDilution.changeTipsValueGradientDilution; // 舍弃选中范围最后一行或最后一列多余的体积 cbDiscardLastVolume.IsChecked = methodDilution.isDiscardLastVolume; #endregion #region 梯度稀释设置 相关 // 板位名 tBlockTablePosDilution.Text = methodDilution.positionTextAddDiluent; // 选中的孔位 tbxWellPositionTipsDilution.Text = methodDilution.wellarrayAddDiluent; // 孔位行列设置 labware = DataRWDAL.LabwareDB.GetLabware(methodDilution.labwareValueAddDiluent); wellPlateDilution.Rows = labware.number_row; wellPlateDilution.Columns = labware.number_column; // 稀释倍数 tbxDilutionFactor.Text = methodDilution.dilutionFactor.ToString(); // 液体类型 cbLiquidTypeDilution.SelectedValue = methodDilution.liquidTypeValueAddDiluent; // 液体范围 cbLiquidRangeDilution.SelectedValue = methodDilution.liquidRangeValueAddDiluent; // 液体 cbLiquidDilution.SelectedValue = methodDilution.liquidValueAddDiluent; // 更换TipId cbChangeTipsDilution.SelectedValue = methodDilution.changeTipsValueAddDiluent; // 目标板选中范围的首行或首列加入稀释液 cbTargetSelectRangeFirstAddDiluent.IsChecked = methodDilution.isTargetSelectRangeFirstAddDiluent; #endregion } if (cbArm.Items.Count > 1) { cbArm.SelectedIndex = 1; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 命令名称 /// /// 命令名称 /// /// /// private void tbxCommandName_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.name = tbxCommandName.Text; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 选择目标板 相关 #region 臂 /// /// 臂 /// /// /// private void cbArm_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { tbxHeadType.Text = methodDilution.headType = string.Empty; // 臂未选择 if (cbArm.SelectedIndex < 0 || cbArm.SelectedIndex == 0) { tipsChannel.SetTotalChannelCount(0); tipsChannel.SelectedChannels = new List(); tipsChannel.SetSelectedChannels(); tipsChannel_SelectedChangedEvent(null, null); return; } DeviceArm deviceArm = ((DeviceArm)cbArm.SelectedItem); // 移液枪 if (deviceArm.arm_type == EnumManagement.GetEnumValue(ArmTypeEnum.Channel)) { // 初始通道信息 //methodDilution.channels = Shared.ChannelsId; tipsChannel.SelectedChannels = Shared.ChannelsId.ToList(); tipsChannel.SetTotalChannelCount(Shared.ChannelCount); tipsChannel.SetSelectedChannels(); tipsChannel_SelectedChangedEvent(null, null); } // 移液枪信息保存 methodDilution.armText = deviceArm.device_arm_name; methodDilution.armValue = deviceArm.device_arm_id.ToString(); tbxHeadType.Text = methodDilution.headType = deviceArm.head_type; } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 台面位置(梯度稀释用) Del ///// ///// 梯度稀释范围 台面位置 ///// ///// ///// //private void comboboxTablePos_SelectionChanged(object sender, SelectionChangedEventArgs e) //{ // try // { // } // catch (Exception ex) // { // LoggerHelper.ErrorLog("ERROR:", ex); // } //} #endregion #region 孔位(梯度稀释用) /// /// 稀释范围 孔位 /// /// /// private void tbxWellPositionTips_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.wellarrayGradientDilution = tbxWellPositionTips.Text; //ValidationWellPosition(); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); //tbxWellPositionTips.BorderBrush = Brushes.Red; //tbxWellPositionTips.BorderThickness = new Thickness(1); //tbkErrorWellPosition.Text = "请先选择孔位,例如:A1,B1"; //tbkErrorWellPosition.Foreground = Brushes.Red; //tbkErrorWellPosition.Visibility = Visibility.Visible; } } #endregion #region 体积 /// /// 体积 /// /// /// private void tbxWellvolume_TextChanged(object sender, TextChangedEventArgs e) { try { try { if (methodDilution != null) { methodDilution.volume = float.Parse(tbxWellvolume.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 液体类型(梯度稀释用) /// /// 液体类型(梯度稀释用) /// /// /// private void cbLiquidType_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbLiquidType.SelectedIndex < 0) { return; } if (cbLiquidType.SelectedIndex == 0) { cbLiquidRange.SelectedIndex = 0; cbLiquid.SelectedIndex = 0; } if (cbLiquidType.SelectedItem != null) { LiquidType liquidType = (LiquidType)cbLiquidType.SelectedItem; if (methodDilution != null) { methodDilution.liquidTypeTextGradientDilution = liquidType.liquid_type_name; methodDilution.liquidTypeValueGradientDilution = liquidType.liquid_type_id; } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 液体体积范围(梯度稀释用) /// /// 液体体积范围(梯度稀释用) /// /// /// private void cbLiquidRange_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbLiquidRange.SelectedIndex < 0) { return; } string typeID = cbLiquidType.SelectedValue as string; string rangeID = cbLiquidRange.SelectedValue as string; string armID = cbArm.SelectedValue.ToString(); ObservableCollection liquidList = LiquidTypeRSRangeDB.GetLiquidFromdbByTypeAndRange(typeID, rangeID, armID); Liquid liquid = new Liquid(); liquid.liquid_name = Properties.Resources.strPleaseSelect; liquidList.Insert(0, liquid); if (cbLiquidRange.SelectedIndex != 0) { LiquidRange liquidRange = (LiquidRange)cbLiquidRange.SelectedItem; if (methodDilution != null) { methodDilution.liquidRangeTextGradientDilution = liquidRange.liquid_range_name; methodDilution.liquidRangeValueGradientDilution = liquidRange.liquid_range_id; } } cbLiquid.ItemsSource = liquidList; cbLiquid.SelectedIndex = 0; } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 液体(梯度稀释用) /// /// 液体(梯度稀释用) /// /// /// private void cbLiquid_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbLiquid.SelectedIndex < 1) { return; } if (cbLiquid.SelectedIndex != 0) { Liquid liquid = cbLiquid.SelectedItem as Liquid; if (methodDilution != null) { methodDilution.liquidTextGradientDilution = liquid.liquid_name; methodDilution.liquidValueGradientDilution = liquid.liquid_id; } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 稀释方向 /// /// 稀释方向 /// /// /// private void cbDilutionDirection_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbDilutionDirection.SelectedIndex < 0) { return; } DropdownName dilutionDirection = cbDilutionDirection.SelectedItem as DropdownName; if (methodDilution != null) { methodDilution.dilutionDirectionText = dilutionDirection.dropdown_name; methodDilution.dilutionDirectionValue = EnumManagement.GetField(Convert.ToInt32(dilutionDirection.dropdown_id)); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 更换枪头 /// /// 更换枪头 /// /// /// private void cbChangeTips_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbChangeTips.SelectedIndex < 0) { return; } DropdownName changeTips = cbChangeTips.SelectedItem as DropdownName; if (methodDilution != null) { methodDilution.changeTipsValueGradientDilution = changeTips.dropdown_id; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 舍弃选中范围最后一行或最后一列多余的体积 /// /// 舍弃选中范围最后一行或最后一列多余的体积 /// /// /// private void cbDiscardLastVolume_Click(object sender, RoutedEventArgs e) { try { if (methodDilution != null) { methodDilution.isDiscardLastVolume = (bool)cbDiscardLastVolume.IsChecked; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 第一页 /// /// 第一页 /// /// /// private void btnNext_Click(object sender, RoutedEventArgs e) { stepBar.Next(); gridSelectTargetPlate.Visibility = Visibility.Collapsed; gridDilutionSetting.Visibility = Visibility.Visible; scrollViewer.ScrollToTop(); } #endregion #endregion #region 梯度稀释设置 相关 #region 稀释液 台面位置 Del ///// ///// 稀释液 台面位置 ///// ///// ///// //private void comboboxTablePosDilution_SelectionChanged(object sender, SelectionChangedEventArgs e) //{ // try // { // } // catch (Exception ex) // { // LoggerHelper.ErrorLog("ERROR:", ex); // } //} #endregion #region 稀释液 孔位 /// /// 稀释液 孔位 /// /// /// private void tbxWellPositionTipsDilution_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.wellarrayAddDiluent = tbxWellPositionTipsDilution.Text; //ValidationWellPosition(); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); //tbxWellPositionTips.BorderBrush = Brushes.Red; //tbxWellPositionTips.BorderThickness = new Thickness(1); //tbkErrorWellPosition.Text = "请先选择孔位,例如:A1,B1"; //tbkErrorWellPosition.Foreground = Brushes.Red; //tbkErrorWellPosition.Visibility = Visibility.Visible; } } #endregion #region 稀释倍数 /// /// 稀释倍数 /// /// /// private void tbxDilutionFactor_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.dilutionFactor = Convert.ToInt32(tbxDilutionFactor.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 液体类型(稀释液) /// /// 液体类型(稀释液) /// /// /// private void cbLiquidTypeDilution_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbLiquidTypeDilution.SelectedIndex < 0) { return; } if (cbLiquidTypeDilution.SelectedIndex == 0) { cbLiquidRangeDilution.SelectedIndex = 0; cbLiquidDilution.SelectedIndex = 0; } if (cbLiquidTypeDilution.SelectedItem != null) { LiquidType liquidType = (LiquidType)cbLiquidTypeDilution.SelectedItem; if (methodDilution != null) { methodDilution.liquidTypeTextAddDiluent = liquidType.liquid_type_name; methodDilution.liquidTypeValueAddDiluent = liquidType.liquid_type_id; } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 液体体积范围(稀释液) /// /// 液体体积范围(稀释液) /// /// /// private void cbLiquidRangeDilution_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbLiquidRangeDilution.SelectedIndex < 0) { return; } string typeID = cbLiquidTypeDilution.SelectedValue as string; string rangeID = cbLiquidRangeDilution.SelectedValue as string; string armID = cbArm.SelectedValue.ToString(); ObservableCollection liquidList = LiquidTypeRSRangeDB.GetLiquidFromdbByTypeAndRange(typeID, rangeID, armID); Liquid liquid = new Liquid(); liquid.liquid_name = Properties.Resources.strPleaseSelect; liquidList.Insert(0, liquid); if (cbLiquidRangeDilution.SelectedIndex != 0) { LiquidRange liquidRange = (LiquidRange)cbLiquidRangeDilution.SelectedItem; if (methodDilution != null) { methodDilution.liquidRangeTextAddDiluent = liquidRange.liquid_range_name; methodDilution.liquidRangeValueAddDiluent = liquidRange.liquid_range_id; } } cbLiquidDilution.ItemsSource = liquidList; cbLiquidDilution.SelectedIndex = 0; } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 液体(稀释液) /// /// 液体(稀释液) /// /// /// private void cbLiquidDilution_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbLiquidDilution.SelectedIndex < 1) { return; } if (cbLiquidDilution.SelectedIndex != 0) { Liquid liquid = cbLiquidDilution.SelectedItem as Liquid; if (methodDilution != null) { methodDilution.liquidTextAddDiluent = liquid.liquid_name; methodDilution.liquidValueAddDiluent = liquid.liquid_id; } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 更换枪头(稀释液) /// /// 更换枪头(稀释液) /// /// /// private void cbChangeTipsDilution_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbChangeTipsDilution.SelectedIndex < 0) { return; } DropdownName changeTips = cbChangeTipsDilution.SelectedItem as DropdownName; if (methodDilution != null) { methodDilution.changeTipsValueAddDiluent = changeTips.dropdown_id; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 上一页 /// /// 上一页 /// /// /// private void btnPrev_Click(object sender, RoutedEventArgs e) { try { stepBar.Prev(); gridSelectTargetPlate.Visibility = Visibility.Visible; gridDilutionSetting.Visibility = Visibility.Collapsed; scrollViewer.ScrollToTop(); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 目标板选中范围的首行或首列加入稀释液 /// /// 目标板选中范围的首行或首列加入稀释液 /// /// /// private void cbTargetSelectRangeFirstAddDiluent_Click(object sender, RoutedEventArgs e) { try { if (methodDilution != null) { methodDilution.isTargetSelectRangeFirstAddDiluent = (bool)cbTargetSelectRangeFirstAddDiluent.IsChecked; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #endregion #region 命令标签 /// /// 命令标签 /// /// /// private void tbxCommandLabel_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.label = tbxCommandLabel.Text; methodDilution.name = tbxCommandName.Text.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 点击布局板位回调事件 /// /// 点击布局板位回调事件 /// /// /// public void SetTableName(string tableName, Labware lb) { try { if (lb == null || string.IsNullOrEmpty(lb.labware_id)) { return; } if (string.IsNullOrEmpty(methodDilution.armValue)) { new MessageDialog(Properties.Resources.msgPlsSelectArm).ShowDialog(); return; } List latticeList = DataRWDAL.LatticeDB.GetLatticeDataFromdb(Shared.SoftwareInformation.software_device_number, Convert.ToInt32(methodDilution.armValue)); // [选择目标板]表示时 if (gridSelectTargetPlate.Visibility == Visibility.Visible) { wellPlate.Rows = lb.number_row; wellPlate.Columns = lb.number_column; tbxWellPositionTips.Text = string.Empty; Lattice lattice = latticeList.Find(s => s.lattice_num == tableName); if (lattice == null) { LoggerHelper.InfoLog("Error: Can't find lattice with lattice_num=" + tableName); return; } tBlockTablePos.Text = tableName; if (methodDilution != null) { methodDilution.positionTextGradientDilution = tableName; methodDilution.positionValueGradientDilution = lattice.lattice_id; methodDilution.labwareTextGradientDilution = lb.labware_name; methodDilution.labwareValueGradientDilution = lb.labware_id; } } // [梯度稀释设置]表示时 else if (gridDilutionSetting.Visibility == Visibility.Visible) { wellPlateDilution.Rows = lb.number_row; wellPlateDilution.Columns = lb.number_column; tbxWellPositionTipsDilution.Text = string.Empty; Lattice lattice = latticeList.Find(s => s.lattice_num == tableName); if (lattice == null) { LoggerHelper.InfoLog("Error: Can't find lattice with lattice_num=" + tableName); return; } tBlockTablePosDilution.Text = tableName; if (methodDilution != null) { methodDilution.positionTextAddDiluent = tableName; methodDilution.positionValueAddDiluent = lattice.lattice_id; methodDilution.labwareTextAddDiluent = lb.labware_name; methodDilution.labwareValueAddDiluent = lb.labware_id; } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 吸头盒 /// /// 吸头盒 /// /// /// private void cbTipsType_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbTipsType.SelectedIndex < 0) { return; } Labware labware = cbTipsType.SelectedItem as Labware; if (methodDilution != null) { methodDilution.labwaretipText = labware.labware_name; methodDilution.labwaretipValue = labware.labware_id.ToString(); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 可用通道鼠标选择变更事件 /// /// 可用通道鼠标选择变更事件 /// /// /// private void tipsChannel_SelectedChangedEvent(object sender, EventArgs e) { try { methodDilution.channels = tipsChannel.SelectedChannels.ToArray(); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 混合 /// /// 混合 /// /// /// private void checkboxMix_Click(object sender, RoutedEventArgs e) { try { if (methodDilution == null) { return; } methodDilution.bMix = (bool)checkboxMix.IsChecked; methodDilution.mixcount = Convert.ToInt32(tbxMixCount.Text); methodDilution.mixvolume = Convert.ToDouble(tbxMixVolume.Text); methodDilution.mixAspiratePositionText = cbMixAspiratePosition.Text; methodDilution.mixAspiratePositionValue = Convert.ToInt32(cbMixAspiratePosition.SelectedValue); methodDilution.mixAspirateDistance = Convert.ToDouble(tbxMixAspirateDistance.Text); methodDilution.mixAspirateSpeed = Convert.ToDouble(tbxMixAspirateSpeed.Text); methodDilution.mixDispensePositionText = cbMixDispensePosition.Text; methodDilution.mixDispensePositionValue = Convert.ToInt32(cbMixDispensePosition.SelectedValue); methodDilution.mixDispenseDistance = Convert.ToDouble(tbxMixDispenseDistance.Text); methodDilution.mixDispenseSpeed = Convert.ToDouble(tbxMixDispenseSpeed.Text); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 混合体积 /// /// /// private void tbxMixVolume_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.mixvolume = Convert.ToDouble(tbxMixVolume.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 混合次数 /// /// /// private void tbxMixCount_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.mixcount = Convert.ToInt32(tbxMixCount.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 吸液时距离方式 /// /// /// private void cbMixAspiratePosition_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.mixAspiratePositionValue = Convert.ToInt32(cbMixAspiratePosition.SelectedValue); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 吸液距离值 /// /// /// private void tbxMixAspirateDistance_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.mixAspirateDistance = Convert.ToDouble(tbxMixAspirateDistance.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 吸液速度 /// /// /// private void tbxMixAspirateSpeed_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.mixAspirateSpeed = Convert.ToDouble(tbxMixAspirateSpeed.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } private void cbMixDispensePosition_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.mixDispensePositionValue = Convert.ToInt32(cbMixDispensePosition.SelectedValue); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 放液距离值 /// /// /// private void tbxMixDispenseDistance_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.mixDispenseDistance = Convert.ToDouble(tbxMixDispenseDistance.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 放液速度 /// /// /// private void tbxMixDispenseSpeed_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDilution != null) { methodDilution.mixDispenseSpeed = Convert.ToDouble(tbxMixDispenseSpeed.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion } }