using DataEntity.Share;
|
using DataRWDAL;
|
using DataRWDalDrive.DB;
|
using HxEnum;
|
using System;
|
using System.Collections.Generic;
|
using System.Collections.ObjectModel;
|
using System.Text.RegularExpressions;
|
using System.Windows;
|
using System.Windows.Controls;
|
using System.Windows.Media;
|
using XCommon.Log;
|
using XHandler.Class.DataEx;
|
using XImagingXhandler.XDAL;
|
|
namespace XHandler.View.MethodProperty
|
{
|
/// <summary>
|
/// 挑菌前环境设置子页面
|
/// </summary>
|
public partial class ChoiceAgoAspirateChildProperty : System.Windows.Controls.UserControl
|
{
|
#region 变量
|
private int mark = 0;
|
public MethodChoiceAgoAspirateChild m_choiceAgoAspirateData = null;
|
#endregion
|
|
#region 构造函数
|
public ChoiceAgoAspirateChildProperty(MethodChoiceAgoAspirateChild choiceAgoAspirateData)
|
{
|
mark = 0;
|
InitializeComponent();
|
m_choiceAgoAspirateData = choiceAgoAspirateData;
|
|
#region 液体类型下拉值
|
ObservableCollection<LiquidType> liquidTypeList = DataModule.getInstance().GetLiquidTypes();
|
cbLiquidType1.ItemsSource = liquidTypeList;
|
#endregion
|
|
#region 获取液体范围类型下拉值
|
ObservableCollection<LiquidRange> liquidRangeList = DataModule.getInstance().GetLiquidRanges();
|
cbLiquidRange1.ItemsSource = liquidRangeList;
|
#endregion
|
|
tbxTablePos.Text = m_choiceAgoAspirateData.positionText;
|
this.DataContext = m_choiceAgoAspirateData;
|
}
|
#endregion
|
|
#region 页面初始化
|
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
mark += 1;
|
|
if (!string.IsNullOrEmpty(m_choiceAgoAspirateData.armValue))
|
{
|
// 根据板位上的耗材类型,显示耗材孔位示意图
|
Labware labwareA = DataRWDAL.LabwareDB.GetLabware(m_choiceAgoAspirateData.labwareValue);
|
wellPlate.Rows = labwareA.number_row;
|
wellPlate.Columns = labwareA.number_column;
|
tbxWellPositionTips.Text = m_choiceAgoAspirateData.wellarray;
|
wellPlate.Selection = m_choiceAgoAspirateData.wellarray;
|
tbxWellvolume.Text = m_choiceAgoAspirateData.wellvolume.ToString();
|
|
// 液体
|
cbLiquidType1.SelectedValue = m_choiceAgoAspirateData.liquididValue1;
|
cbLiquidRange1.SelectedValue = m_choiceAgoAspirateData.liquidrangeidValue1;
|
cbLiquid1.SelectedValue = m_choiceAgoAspirateData.liquidpidValue1;
|
|
// 开启挑菌前吸液
|
cbOpenAspirate.IsChecked = m_choiceAgoAspirateData.bEnableBeforeAspirate;
|
}
|
else
|
{
|
ObservableCollection<Liquid> liquidList = new ObservableCollection<Liquid>();
|
Liquid liquid = new Liquid();
|
liquid.liquid_id = string.Empty;
|
liquid.liquid_name = Properties.Resources.strPleaseSelect;
|
liquidList.Insert(0, liquid);
|
cbLiquid1.ItemsSource = liquidList;
|
cbLiquid1.SelectedIndex = 0;
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
|
#endregion
|
|
#region 台面位置
|
private void tbxTablePos_TextChanged(object sender, TextChangedEventArgs e)
|
{
|
tbxWellPositionTips.Text = string.Empty;
|
}
|
#endregion
|
|
#region 开启挑菌前吸液
|
private void cbOpenAspirate_Click(object sender, RoutedEventArgs e)
|
{
|
try
|
{
|
m_choiceAgoAspirateData.bEnableBeforeAspirate = (bool)cbOpenAspirate.IsChecked;
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
}
|
}
|
#endregion
|
|
#region 试剂槽孔位选择变更
|
private void tbxWellPositionTips_TextChanged(object sender, TextChangedEventArgs e)
|
{
|
try
|
{
|
if (m_choiceAgoAspirateData != null)
|
{
|
m_choiceAgoAspirateData.wellarray = tbxWellPositionTips.Text;
|
validationWellPosition();
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
tbxWellPositionTips.BorderBrush = Brushes.Red;
|
tbxWellPositionTips.BorderThickness = new Thickness(1);
|
tbkErrorWellPosition.Text = "请先选择孔位";
|
tbkErrorWellPosition.Foreground = Brushes.Red;
|
tbkErrorWellPosition.Visibility = Visibility.Visible;
|
return;
|
}
|
}
|
|
public void validationWellPosition()
|
{
|
string wellString = tbxWellPositionTips.Text;
|
if (string.IsNullOrEmpty(wellString))
|
{
|
tbxWellPositionTips.BorderBrush = Brushes.Red;
|
tbxWellPositionTips.BorderThickness = new Thickness(1);
|
tbkErrorWellPosition.Text = "请先选择孔位";
|
tbkErrorWellPosition.Foreground = Brushes.Red;
|
tbkErrorWellPosition.Visibility = Visibility.Visible;
|
return;
|
}
|
else if (wellString.Contains("=") && !wellString.Substring(0, 1).Equals("="))
|
{
|
tbxWellPositionTips.BorderBrush = Brushes.Red;
|
tbxWellPositionTips.BorderThickness = new Thickness(1);
|
tbkErrorWellPosition.Text = "输入的孔位,包含“=”时,格式应为:=i,i为命令前设置的变量名称";
|
tbkErrorWellPosition.TextWrapping = TextWrapping.WrapWithOverflow;
|
tbkErrorWellPosition.Foreground = Brushes.Red;
|
tbkErrorWellPosition.Visibility = Visibility.Visible;
|
return;
|
}
|
else if (wellString.Contains("&") && !wellString.Substring(0, 1).Equals("&"))
|
{
|
tbxWellPositionTips.BorderBrush = Brushes.Red;
|
tbxWellPositionTips.BorderThickness = new Thickness(1);
|
tbkErrorWellPosition.Text = "输入的孔位,包含“&”时,格式应为:&i,i为命令前设置的变量名称";
|
tbkErrorWellPosition.TextWrapping = TextWrapping.WrapWithOverflow;
|
tbkErrorWellPosition.Foreground = Brushes.Red;
|
tbkErrorWellPosition.Visibility = Visibility.Visible;
|
return;
|
}
|
else if (wellString.Contains(";") || wellString.Contains("|") ||
|
wellString.Contains("*") || wellString.Contains("!") ||
|
wellString.Contains("@") || wellString.Contains("#") ||
|
wellString.Contains("$") || wellString.Contains("%") ||
|
wellString.Contains("^") || wellString.Contains("(") ||
|
wellString.Contains(")") || wellString.Contains("{") ||
|
wellString.Contains("}") || wellString.Contains("[") ||
|
wellString.Contains("]") || wellString.Contains("?") ||
|
wellString.Contains("/") || wellString.Contains("\\") ||
|
wellString.Contains("~") || wellString.Contains("`") ||
|
wellString.Contains(":") || wellString.Contains("\"") ||
|
wellString.Contains("'"))
|
{
|
tbxWellPositionTips.BorderBrush = Brushes.Red;
|
tbxWellPositionTips.BorderThickness = new Thickness(1);
|
tbkErrorWellPosition.Text = "输入的孔位,不能包含“;”、“|”、“*”、“!”、“@”、“#”、“$”、“%”、" +
|
"“^”、“(”、“)”、“{”、“}”、“[”、“]”、“?”、“/”、“\\”、“~”、" +
|
"“`”、“:”、“\"”、“'”";
|
tbkErrorWellPosition.TextWrapping = TextWrapping.WrapWithOverflow;
|
tbkErrorWellPosition.Foreground = Brushes.Red;
|
tbkErrorWellPosition.Visibility = Visibility.Visible;
|
return;
|
}
|
else
|
{
|
tbxWellPositionTips.BorderBrush = Brushes.Transparent;
|
tbxWellPositionTips.BorderThickness = new Thickness(0);
|
tbkErrorWellPosition.Foreground = Brushes.Transparent;
|
tbkErrorWellPosition.Visibility = Visibility.Hidden;
|
}
|
}
|
#endregion
|
|
#region 每孔体积 (μL)
|
private void tbxWellvolume_TextChanged(object sender, TextChangedEventArgs e)
|
{
|
try
|
{
|
if (m_choiceAgoAspirateData != null)
|
{
|
m_choiceAgoAspirateData.wellvolume = Convert.ToDouble(tbxWellvolume.Text);
|
validationWellVolume();
|
}
|
}
|
catch (Exception ex)
|
{
|
LoggerHelper.ErrorLog("ERROR:", ex);
|
tbxWellvolume.BorderBrush = Brushes.Red;
|
tbkErrorWellVolume.Text = "每孔体积值:[0,1000]之间";
|
tbkErrorWellVolume.Foreground = Brushes.Red;
|
tbkErrorWellVolume.Visibility = Visibility.Visible;
|
return;
|
}
|
}
|
public void validationWellVolume()
|
{
|
string volumeString = tbxWellvolume.Text;
|
Regex rg = new Regex(@"^[1-9]\\d*.\\d*|0\\.\\d*[1-9]\\d*$");
|
if (string.IsNullOrEmpty(volumeString))
|
{
|
tbxWellvolume.BorderBrush = Brushes.Red;
|
tbkErrorWellVolume.Text = "每孔体积值:[0,1000]之间";
|
tbkErrorWellVolume.Foreground = Brushes.Red;
|
tbkErrorWellVolume.Visibility = Visibility.Visible;
|
return;
|
}
|
else if (rg.IsMatch(volumeString))
|
{
|
tbxWellvolume.BorderBrush = Brushes.Red;
|
tbkErrorWellVolume.Text = "每孔体积值:[0,1000]之间";
|
tbkErrorWellVolume.Foreground = Brushes.Red;
|
tbkErrorWellVolume.Visibility = Visibility.Visible;
|
return;
|
}
|
else if (Convert.ToDouble(volumeString) < 0 || Convert.ToDouble(volumeString) > 1000)
|
{
|
tbxWellvolume.BorderBrush = Brushes.Red;
|
tbkErrorWellVolume.Text = "[0,1000]之间";
|
tbkErrorWellVolume.Foreground = Brushes.Red;
|
tbkErrorWellVolume.Visibility = Visibility.Visible;
|
return;
|
}
|
else
|
{
|
tbxWellvolume.BorderBrush = Brushes.Transparent;
|
tbkErrorWellVolume.Foreground = Brushes.Transparent;
|
tbkErrorWellVolume.Visibility = Visibility.Hidden;
|
}
|
}
|
#endregion
|
|
#region 选择液体类型
|
private void cbLiquidType1_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
{
|
if (mark == 1)
|
{
|
if (m_choiceAgoAspirateData != null)
|
{
|
m_choiceAgoAspirateData.liquididText1 = ((LiquidType)cbLiquidType1.SelectedItem).liquid_type_name.ToString();
|
if (m_choiceAgoAspirateData.liquididText1 != "请选择类型")
|
{
|
m_choiceAgoAspirateData.liquididValue1 = ((LiquidType)cbLiquidType1.SelectedItem).liquid_type_id.ToString();
|
}
|
else
|
{
|
m_choiceAgoAspirateData.liquididValue1 = "0";
|
}
|
}
|
}
|
else
|
{
|
if (cbLiquidType1.SelectedIndex < 0)
|
return;
|
if (cbLiquidType1.SelectedIndex == 0)
|
{
|
cbLiquidRange1.SelectedIndex = 0;
|
cbLiquid1.SelectedIndex = 0;
|
}
|
if (cbLiquidType1.SelectedIndex != 0)
|
{
|
m_choiceAgoAspirateData.liquididText1 = ((LiquidType)cbLiquidType1.SelectedItem).liquid_type_name.ToString();
|
m_choiceAgoAspirateData.liquididValue1 = ((LiquidType)cbLiquidType1.SelectedItem).liquid_type_id.ToString();
|
}
|
}
|
}
|
#endregion
|
|
#region 选择液体范围
|
private void cbLiquidRange1_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
{
|
string typeID = cbLiquidType1.SelectedValue as string;
|
string rangeID = cbLiquidRange1.SelectedValue as string;
|
string armID = m_choiceAgoAspirateData.armValue;
|
ObservableCollection<Liquid> liquidList = LiquidTypeRSRangeDB.GetLiquidFromdbByTypeAndRange(typeID, rangeID, armID);
|
Liquid liquid = new Liquid();
|
liquid.liquid_id = string.Empty;
|
liquid.liquid_name = Properties.Resources.strPleaseSelect;
|
liquidList.Insert(0, liquid);
|
cbLiquid1.ItemsSource = liquidList;
|
|
if (mark == 1)
|
{
|
if (m_choiceAgoAspirateData != null)
|
{
|
if ((LiquidRange)cbLiquidRange1.SelectedItem != null)
|
{
|
m_choiceAgoAspirateData.liquidrangeidText1 = ((LiquidRange)cbLiquidRange1.SelectedItem).liquid_range_name.ToString();
|
m_choiceAgoAspirateData.liquidrangeidValue1 = ((LiquidRange)cbLiquidRange1.SelectedItem).liquid_range_id.ToString();
|
}
|
}
|
}
|
else
|
{
|
if (cbLiquidRange1.SelectedIndex < 0)
|
{
|
return;
|
}
|
|
if (cbLiquidRange1.SelectedIndex != 0)
|
{
|
m_choiceAgoAspirateData.liquidrangeidText1 = ((LiquidRange)cbLiquidRange1.SelectedItem).liquid_range_name.ToString();
|
m_choiceAgoAspirateData.liquidrangeidValue1 = ((LiquidRange)cbLiquidRange1.SelectedItem).liquid_range_id.ToString();
|
}
|
}
|
}
|
#endregion
|
|
#region 选择液体
|
private void cbLiquid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
{
|
Liquid liquid = cbLiquid1.SelectedItem as Liquid;
|
if (liquid != null)
|
{
|
m_choiceAgoAspirateData.liquidpidText1 = liquid.liquid_name;
|
m_choiceAgoAspirateData.liquidpidValue1 = liquid.liquid_id;
|
}
|
}
|
#endregion
|
|
#region 私有方法
|
public void SetTableName(string tableName, Labware lb)
|
{
|
if (lb == null)
|
return;
|
if (string.IsNullOrEmpty(lb.labware_id))
|
return;
|
if (string.IsNullOrEmpty(m_choiceAgoAspirateData.armValue))
|
{
|
MessageBox.Show(Properties.Resources.msgPlsSelectArm, "Tips");
|
return;
|
}
|
|
wellPlate.Rows = lb.number_row;
|
wellPlate.Columns = lb.number_column;
|
List<Lattice> latticeList = DataRWDAL.LatticeDB.GetLatticeDataFromdb(Shared.SoftwareInformation.software_device_number, Convert.ToInt32(m_choiceAgoAspirateData.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;
|
}
|
|
tbxTablePos.Text = tableName;
|
if (m_choiceAgoAspirateData != null)
|
{
|
m_choiceAgoAspirateData.positionText = tableName;
|
m_choiceAgoAspirateData.positionValue = lattice.lattice_id;
|
m_choiceAgoAspirateData.labwareText = lb.labware_name;
|
m_choiceAgoAspirateData.labwareValue = lb.labware_id;
|
}
|
}
|
|
// 根据挑菌方式,改变页面
|
public void ChangeDisp(int choiceMode)
|
{
|
// 吸液
|
if (choiceMode == EnumManagement.GetEnumValue(ChoiceModeEnum.AspirateMode))
|
{
|
cbOpenAspirate.IsChecked = true;
|
|
// 隐藏台面、孔位
|
tbxTablePosTitle.Visibility = Visibility.Collapsed;
|
tbxTablePos.Visibility = Visibility.Collapsed;
|
cbOpenAspirate.Visibility = Visibility.Collapsed;
|
tbxWellPositionTipsTitle.Visibility = Visibility.Collapsed;
|
tbxWellPositionTips.Visibility = Visibility.Collapsed;
|
tbkErrorWellPosition.Visibility = Visibility.Collapsed;
|
wellPlateSelectTip.Visibility = Visibility.Collapsed;
|
wellPlate.Visibility = Visibility.Collapsed;
|
}
|
else
|
{
|
// 显示台面、孔位
|
tbxTablePosTitle.Visibility = Visibility.Visible;
|
tbxTablePos.Visibility = Visibility.Visible;
|
cbOpenAspirate.Visibility = Visibility.Visible;
|
tbxWellPositionTipsTitle.Visibility = Visibility.Visible;
|
tbxWellPositionTips.Visibility = Visibility.Visible;
|
tbkErrorWellPosition.Visibility = Visibility.Visible;
|
wellPlateSelectTip.Visibility = Visibility.Visible;
|
wellPlate.Visibility = Visibility.Visible;
|
}
|
}
|
#endregion
|
}
|
}
|