using DataEntity.Share; using DataRWDAL; 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.Controls; using XHandler.View.MethodProperty; using XImagingXhandler.XDAL; namespace XHandler.View.BacteriaProperty { /// /// 接种转板方法属性页面 /// public partial class CoatingAndTransferProperty : UserControl, IMethodProperty { #region 变量 private int mark = 0; private PromptTextBox coatingLabware = null; // 接种耗材类型 public MethodCoatingAndTransfer methodCoating = null; private int[] channels = Shared.ChannelsId; #endregion #region 构造函数 /// /// 构造函数 /// /// public CoatingAndTransferProperty(MethodEx method) { mark = 0; InitializeComponent(); methodCoating = new MethodCoatingAndTransfer(); mark = 1; methodCoating.strIndex = method.strIndex; methodCoating.label = method.method_name; // 命令标签 methodCoating.name = method.method_name; // 命令名称 methodCoating.status = (method.isEnabled == true ? "enable" : "disable"); this.DataContext = methodCoating; #region 获取机械臂信息 methodCoating.channels = Shared.ChannelsId; List armList = DataModule.getInstance().GetDeviceArm(); cbArm.ItemsSource = armList; // 只有一个臂的情况下默认选中该臂 cbArm.SelectedIndex = armList.Count == 2 ? 1 : 0; #endregion #region 涂布方式 ObservableCollection coatingModeList = DataModule.getInstance().GetCoatingMode(); ObservableCollection coatingModeListNew = new ObservableCollection(); foreach (var coatingModeItem in coatingModeList) { // 上下、加液 if (coatingModeItem.dropdown_name.Equals(Properties.Resources.strUpDownMode) || coatingModeItem.dropdown_name.Equals(Properties.Resources.strDispense)) { coatingModeListNew.Add(coatingModeItem); } } cbCoatingMode.ItemsSource = coatingModeListNew; #endregion #region 接种数量 rdoCoatingCount1.IsChecked = true; #endregion if (Shared.ChannelCount > 1) { tipsChannel.CanEdit = true; } if (method.tag!=null) { methodCoating = (MethodCoatingAndTransfer)method.tag; channels = methodCoating.channels; } } #endregion #region 方法标签文件更改事件 /// /// 方法标签文件更改事件 /// /// /// private void tbxCommandLabel_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark == 0) { return; } methodCoating.label = tbxCommandLabel.Text; } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 方法名称更改事件 /// /// 方法名称更改事件 /// /// /// private void tbxCommandName_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark == 0) { return; } methodCoating.name = tbxCommandName.Text; } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 机械臂选择变更事件 /// /// 机械臂选择变更事件 /// /// /// private void cbArm_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (mark == 0) { return; } // 臂未选择 if (cbArm.SelectedIndex < 0 || cbArm.SelectedIndex == 0) { methodCoating.armText = ""; // 机械臂 methodCoating.armValue = ""; textboxArmHead.Text = ""; // 挑菌枪 tipsChannel.SetTotalChannelCount(0); tipsChannel.SelectedChannels = new List(); tipsChannel.SetSelectedChannels(); tipsChannel_SelectedChangedEvent(null, null); return; } #region 设置移液枪通道 tipsChannel.SelectedChannels = Shared.ChannelsId.ToList(); tipsChannel.SetTotalChannelCount(Shared.ChannelCount); tipsChannel.SetSelectedChannels(); tipsChannel_SelectedChangedEvent(null, null); #endregion DeviceArm arm = cbArm.SelectedItem as DeviceArm; methodCoating.armText = arm.device_arm_name; methodCoating.armValue = arm.device_arm_id.ToString(); methodCoating.headType = arm.head_type; textboxArmHead.Text = arm.head_type; } #endregion #region 涂布方式选择变更事件 /// /// 涂布方式选择变更事件 /// /// /// private void cbCoatingMode_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (mark == 0) { return; } DropdownName dpdItem = (DropdownName)cbCoatingMode.SelectedItem; methodCoating.coatingModeValue = Convert.ToInt32(dpdItem.dropdown_id); // 回字型 if (dpdItem.dropdown_id.Equals(EnumManagement.GetEnumValue(CoatingModeEnum.HuiziMode).ToString())) { gridShake.Visibility = Visibility.Collapsed; } // Z字型 else if (dpdItem.dropdown_id.Equals(EnumManagement.GetEnumValue(CoatingModeEnum.ZMode).ToString())) { gridShake.Visibility = Visibility.Collapsed; } // 上下移动 else if (dpdItem.dropdown_id.Equals(EnumManagement.GetEnumValue(CoatingModeEnum.UpDownMode).ToString())) { gridShake.Visibility = Visibility.Visible; } // 放液 else if (dpdItem.dropdown_id.Equals(EnumManagement.GetEnumValue(CoatingModeEnum.DispenseMode).ToString())) { gridShake.Visibility = Visibility.Collapsed; } } #endregion #region 接种数量选择变更事件 /// /// 接种数量选择变更事件 /// /// /// private void rdoCoatingCount_Checked(object sender, RoutedEventArgs e) { if (mark == 0) { return; } methodCoating.coatingCount = rdoCoatingCount1.IsChecked == true ? 0 : 1; } #endregion #region 接种耗材 /// /// 接种A耗材类型文字变更事件 /// /// /// private void coatingLabwareA_TextChanged(object sender, TextChangedEventArgs e) { if (mark == 0) { return; } methodCoating.coatingLabwareAText = coatingLabwareA.Text; methodCoating.coatingLabwareAValue = coatingLabwareA.Tag.ToString(); } /// /// 接种B耗材类型文字变更事件 /// /// /// private void coatingLabwareB_TextChanged(object sender, TextChangedEventArgs e) { if (mark == 0) { return; } //methodCoating.coatingLabwareBText = coatingLabwareB.Text; //methodCoating.coatingLabwareBValue = coatingLabwareB.Tag.ToString(); } /// /// 接种耗材获得焦点事件 /// /// /// private void coatingLabware_GotFocus(object sender, RoutedEventArgs e) { coatingLabware = (PromptTextBox)sender; } #endregion #region 自动开关盖点击事件 /// /// 自动开关盖点击事件 /// /// /// private void ckbAutoOpenCloseCover_Click(object sender, RoutedEventArgs e) { if (mark == 0) { return; } methodCoating.autoOpenCloseCover = ckbAutoOpenCloseCover.IsChecked == true ? 1 : 0; } #endregion #region 设置已选择的台面数据 public void SetTableName(string tableName, Labware lb) { if (lb == null || string.IsNullOrEmpty(lb.labware_id)) { return; } List latticeList = LatticeDB.GetLatticeDataFromdb(Shared.SoftwareInformation.software_device_number, Convert.ToInt32(methodCoating.armValue)); Lattice lattice = latticeList.Find(s => s.lattice_num == tableName); if (lattice == null) { LoggerHelper.InfoLog("Error: Can't find lattice with lattice_num=" + tableName); return; } if (coatingLabware != null) { coatingLabware.Tag = lb.labware_id; coatingLabware.Text = lb.labware_name; } } #endregion #region 界面初期表示事件 private void UserControl_Loaded(object sender, RoutedEventArgs e) { try { if (mark == 0) { return; } #region 机械臂 if (!string.IsNullOrEmpty(methodCoating.armText)) { tbxCommandName.Text = methodCoating.name; cbArm.SelectedValue = methodCoating.armValue; DeviceArm arm = cbArm.SelectedItem as DeviceArm; textboxArmHead.Text = arm.head_type; // 通道 tipsChannel.SelectedChannels = channels.ToList(); tipsChannel_SelectedChangedEvent(null, null); } else { cbArm.SelectedIndex = 0; DeviceArm arm = cbArm.SelectedItem as DeviceArm; if (arm != null) { textboxArmHead.Text = arm.head_type; } } #endregion #region 涂布方式 cbCoatingMode.SelectedValue = methodCoating.coatingModeValue.ToString(); #endregion #region 涂布数量 // 单板 if (methodCoating.coatingCount == 0) { rdoCoatingCount1.IsChecked = true; } // 双板 else { rdoCoatingCount2.IsChecked = true; } #endregion #region 接种耗材 coatingLabwareA.Tag = methodCoating.coatingLabwareAValue; coatingLabwareA.Text = methodCoating.coatingLabwareAText; //coatingLabwareB.Tag = methodCoating.coatingLabwareBValue; //coatingLabwareB.Text = methodCoating.coatingLabwareBText; #endregion #region 自动开关盖 ckbAutoOpenCloseCover.IsChecked = methodCoating.autoOpenCloseCover == 1; #endregion #region 涂布方式:上下相关 tbxDistanceFromBottom.Text = methodCoating.distanceFromBottom.ToString(); tbxShakeDistance.Text = methodCoating.shakeDistanceValue.ToString(); tbxShakeCount.Text = methodCoating.shakeCountValue.ToString(); #endregion } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 涂布方式:上下 /// /// 距底距离更改事件 /// /// /// private void tbxDistanceFromBottom_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark == 0) { return; } methodCoating.distanceFromBottom = Convert.ToInt32(tbxDistanceFromBottom.Text); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 移动距离更改事件 /// /// /// private void tbxShakeDistance_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark == 0) { return; } methodCoating.shakeDistanceValue = float.Parse(tbxShakeDistance.Text); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } /// /// 次数更改事件 /// /// /// private void tbxShakeCount_TextChanged(object sender, TextChangedEventArgs e) { try { if (mark == 0) { return; } methodCoating.shakeCountValue = Convert.ToInt32(tbxShakeCount.Text); } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } #endregion #region 可用通道鼠标选择变更事件 /// /// 可用通道鼠标选择变更事件 /// /// /// private void tipsChannel_SelectedChangedEvent(object sender, EventArgs e) { methodCoating.channels = tipsChannel.SelectedChannels.ToArray(); } #endregion } }