更新
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
@@ -25,7 +25,14 @@ namespace TabletTester2025
|
||||
FriabilityMaxLossBox.Text = p.FriabilityMaxLossPercent.ToString();
|
||||
SelectDisintegrationDosageForm(p.DisintegrationDosageForm);
|
||||
DisintegrationMaxSecBox.Text = p.DisintegrationMaxSeconds.ToString();
|
||||
DisintegrationSpeedBox.Text = p.DisintegrationSpeedRpm.ToString();
|
||||
DisintegrationTempBox.Text = p.DisintegrationTemperatureC.ToString();
|
||||
DissolutionMinPercentBox.Text = p.DissolutionMinPercentAt30min.ToString();
|
||||
DissolutionTempBox.Text = p.DissolutionTemperatureC.ToString();
|
||||
Dissolution1TimeBox.Text = p.Dissolution1TimeMin.ToString();
|
||||
Dissolution2TimeBox.Text = p.Dissolution2TimeMin.ToString();
|
||||
Dissolution1IntervalBox.Text = p.Dissolution1SampleIntervalMin.ToString();
|
||||
Dissolution2IntervalBox.Text = p.Dissolution2SampleIntervalMin.ToString();
|
||||
SampleTimesBox.Text = string.Join(",", p.DissolutionSampleTimes);
|
||||
}
|
||||
|
||||
@@ -42,11 +49,23 @@ namespace TabletTester2025
|
||||
p.FriabilityMaxLossPercent = double.Parse(FriabilityMaxLossBox.Text);
|
||||
p.DisintegrationDosageForm = GetSelectedDisintegrationDosageForm();
|
||||
p.DisintegrationMaxSeconds = int.Parse(DisintegrationMaxSecBox.Text);
|
||||
p.DisintegrationSpeedRpm = double.Parse(DisintegrationSpeedBox.Text);
|
||||
p.DisintegrationTemperatureC = double.Parse(DisintegrationTempBox.Text);
|
||||
p.DissolutionMinPercentAt30min = double.Parse(DissolutionMinPercentBox.Text);
|
||||
p.DissolutionSampleTimes = SampleTimesBox.Text.Split(',').Select(s => int.Parse(s.Trim())).ToArray();
|
||||
p.DissolutionTemperatureC = double.Parse(DissolutionTempBox.Text);
|
||||
p.Dissolution1TimeMin = int.Parse(Dissolution1TimeBox.Text);
|
||||
p.Dissolution2TimeMin = int.Parse(Dissolution2TimeBox.Text);
|
||||
p.Dissolution1SampleIntervalMin = double.Parse(Dissolution1IntervalBox.Text);
|
||||
p.Dissolution2SampleIntervalMin = double.Parse(Dissolution2IntervalBox.Text);
|
||||
p.DissolutionSampleTimes = SampleTimesBox.Text
|
||||
.Split(',', StringSplitOptions.RemoveEmptyEntries)
|
||||
.Select(s => int.Parse(s.Trim()))
|
||||
.ToArray();
|
||||
|
||||
MessageBox.Show("参数已保存(重启后生效)", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
// 可以进一步将参数写入配置文件 appsettings.json 以便持久化(可选,此处省略)
|
||||
ValidateParameters(p);
|
||||
App.SaveCurrentPharmaParameters();
|
||||
|
||||
MessageBox.Show("参数已保存并立即生效", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
DialogResult = true;
|
||||
Close();
|
||||
}
|
||||
@@ -62,11 +81,6 @@ namespace TabletTester2025
|
||||
Close();
|
||||
}
|
||||
|
||||
private void HardnessMinBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void DisintegrationDosageFormBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (DisintegrationDosageFormBox.SelectedItem is ComboBoxItem item && item.Tag is string seconds)
|
||||
@@ -93,5 +107,25 @@ namespace TabletTester2025
|
||||
? item.Content?.ToString() ?? "普通片"
|
||||
: "普通片";
|
||||
}
|
||||
|
||||
private static void ValidateParameters(PharmaParameters p)
|
||||
{
|
||||
if (p.HardnessMin_N < 0 || p.HardnessMax_N <= p.HardnessMin_N)
|
||||
throw new InvalidOperationException("硬度内控上限必须大于下限。");
|
||||
if (p.HardnessTestCount <= 0)
|
||||
throw new InvalidOperationException("硬度测试次数必须大于0。");
|
||||
if (p.FriabilityTargetRpm <= 0 || p.FriabilityTargetRounds <= 0 || p.FriabilityMaxLossPercent <= 0)
|
||||
throw new InvalidOperationException("脆碎度参数必须大于0。");
|
||||
if (p.DisintegrationMaxSeconds <= 0 || p.DisintegrationSpeedRpm <= 0 || p.DisintegrationTemperatureC <= 0)
|
||||
throw new InvalidOperationException("崩解参数必须大于0。");
|
||||
if (p.DissolutionMinPercentAt30min < 0 || p.DissolutionMinPercentAt30min > 150)
|
||||
throw new InvalidOperationException("溶出度Q值应在0到150之间。");
|
||||
if (p.DissolutionTemperatureC <= 0 || p.Dissolution1TimeMin <= 0 || p.Dissolution2TimeMin <= 0)
|
||||
throw new InvalidOperationException("溶出温度和运行时间必须大于0。");
|
||||
if (p.Dissolution1SampleIntervalMin <= 0 || p.Dissolution2SampleIntervalMin <= 0)
|
||||
throw new InvalidOperationException("溶出取样间隔必须大于0。");
|
||||
if (p.DissolutionSampleTimes == null || p.DissolutionSampleTimes.Length == 0 || p.DissolutionSampleTimes.Any(t => t <= 0))
|
||||
throw new InvalidOperationException("溶出取样时间点必须为大于0的分钟数。");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user