追溯上传成功后弹出自动关闭提示窗口

优化日志记录方式,移除部分Debug输出,新增AutoCloseMessageWindow用于追溯上传成功时自动弹出3秒后关闭的提示窗口,提升用户体验。建议后续修正窗口标题和按钮的中文乱码问题。
This commit is contained in:
2025-12-16 11:01:07 +08:00
parent 1c7b192270
commit ca0c9fa035
3 changed files with 85 additions and 10 deletions

View File

@@ -218,7 +218,7 @@ namespace LineTraceabilitySystem.ViewModels
) )
{ {
//IRegionManager regionManager, //IRegionManager regionManager,
Debug.WriteLine("程序初始化"); // 程序初始化记录
AddToOperationHistory($"程序初始化"); AddToOperationHistory($"程序初始化");
// 初始化 // 初始化
_scanService = scanService; _scanService = scanService;
@@ -280,7 +280,7 @@ namespace LineTraceabilitySystem.ViewModels
} }
private void ComboxSelectionChanged(object mode) private void ComboxSelectionChanged(object mode)
{ {
Debug.Write(mode.ToString()); // 记录下拉选择变化(如需详细日志可改为 AddToOperationHistory
if (mode is ComboBoxItem combo) if (mode is ComboBoxItem combo)
{ {
if (combo.Content.ToString() == "单机") if (combo.Content.ToString() == "单机")
@@ -506,7 +506,6 @@ namespace LineTraceabilitySystem.ViewModels
Application.Current.Dispatcher.Invoke(() => Application.Current.Dispatcher.Invoke(() =>
{ {
ScanResult = data; ScanResult = data;
Debug.WriteLine($"步骤:{CurrentStep}");
// 根据当前步骤处理扫描数据 // 根据当前步骤处理扫描数据
switch (CurrentStep) switch (CurrentStep)
{ {
@@ -700,7 +699,7 @@ namespace LineTraceabilitySystem.ViewModels
{ {
try try
{ {
Debug.WriteLine($"追溯数据上传服务器"); // 记录开始上传追溯数据
AddToOperationHistory($"追溯数据上传服务器"); AddToOperationHistory($"追溯数据上传服务器");
// 在后台线程中执行数据库操作 // 在后台线程中执行数据库操作
@@ -759,21 +758,33 @@ namespace LineTraceabilitySystem.ViewModels
}; };
// 插入数据 // 插入数据
db.Insertable(logRecord).ExecuteCommand(); db.Insertable(logRecord).ExecuteCommand();
Debug.WriteLine($"追溯上传成功"); // 追溯上传成功日志
}); });
// 在UI线程中更新操作历史 // 在UI线程中更新操作历史并显示自动关闭的成功提示窗口
Application.Current.Dispatcher.Invoke(() => Application.Current.Dispatcher.Invoke(() =>
{ {
AddToOperationHistory($"追溯上传成功"); AddToOperationHistory($"追溯上传成功");
try
{
// 显示提示窗口3 秒后自动关闭
var win = new LineTraceabilitySystem.Views.AutoCloseMessageWindow("追溯上传成功", TimeSpan.FromSeconds(3));
// 设置主窗口为 Owner如果存在以保证窗口居中
if (Application.Current.MainWindow != null)
{
win.Owner = Application.Current.MainWindow;
}
win.Show();
}
catch
{
// 若显示窗口失败则只记录日志,不影响主流程
}
}); });
} }
catch (Exception ex) catch (Exception ex)
{ {
Debug.WriteLine($"追溯上传失败: {ex.Message}"); // 上传失败,记录并提示
// 在UI线程中更新操作历史和显示错误信息
Application.Current.Dispatcher.Invoke(() => Application.Current.Dispatcher.Invoke(() =>
{ {
AddToOperationHistory($"追溯上传失败: {ex.Message}"); AddToOperationHistory($"追溯上传失败: {ex.Message}");

View File

@@ -0,0 +1,30 @@
<Window x:Class="LineTraceabilitySystem.Views.AutoCloseMessageWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="<22><>ʾ"
Width="320"
Height="140"
WindowStartupLocation="CenterOwner"
ResizeMode="NoResize"
ShowInTaskbar="False">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock x:Name="MessageTextBlock"
Grid.Row="0"
TextWrapping="Wrap"
FontSize="14"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Text="" />
<Button Grid.Row="1"
Margin="0,10,0,0"
Width="80"
Height="28"
HorizontalAlignment="Center"
Content="<22>ر<EFBFBD>"
Click="CloseButton_Click" />
</Grid>
</Window>

View File

@@ -0,0 +1,34 @@
using System;
using System.Windows;
using System.Windows.Threading;
namespace LineTraceabilitySystem.Views
{
/// <summary>
/// <20><><EFBFBD>Զ<EFBFBD><D4B6>رչ<D8B1><D5B9>ܵ<EFBFBD><DCB5><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
/// </summary>
public partial class AutoCloseMessageWindow : Window
{
private DispatcherTimer _timer;
public AutoCloseMessageWindow(string message, TimeSpan? autoClose = null)
{
InitializeComponent();
MessageTextBlock.Text = message;
if (autoClose.HasValue && autoClose.Value > TimeSpan.Zero)
{
_timer = new DispatcherTimer();
_timer.Interval = autoClose.Value;
_timer.Tick += (s, e) => { _timer.Stop(); this.Close(); };
_timer.Start();
}
}
private void CloseButton_Click(object sender, RoutedEventArgs e)
{
_timer?.Stop();
this.Close();
}
}
}