SunnyUI ShowWaitForm 超时关闭

在 SunnyUI 中,ShowWaitForm 方法用于显示一个等待窗口,通常用于长时间的操作过程中提示用户等待。如果您想实现一个等待窗口在指定时间内自动关闭的功能,可以使用定时器来实现。

下面是一个示例代码,演示如何使用 ShowWaitForm 显示等待窗口,并在指定时间后自动关闭:

示例代码

第一种方法
private System.Timers.Timer timeoutTimer;
private void btnConnect_Click(object sender, EventArgs e)
{
    try
    {
        ShowWaitForm("连接服务器中...");
        // 启动定时器
        StartTimeoutTimer(5000); // 设置超时时间为 5 秒
        if (Connect())
        {
            State = EditorStateEnum.ConectedServer;
            HideWaitForm();
            LoadShowMapData();                    

            var carTool = solutionCtrl1.SelectedModelObject() as AGVTool;
            if (carTool != null)
            {
                var car = serverCars.Where(p => p.CarCode == carTool.CarCode).FirstOrDefault();
                SetCarButtonStatus(car);
            }
        }
    }
    catch (Exception ex)
    {
        ex.LogError();
        HideWaitForm();
        Comm.ErrorMessage(ex.Message);
    }
}
private void StartTimeoutTimer(int timeout)
{
    // 创建定时器
    timeoutTimer = new System.Timers.Timer(timeout);
    timeoutTimer.AutoReset = false;
    timeoutTimer.Elapsed += TimeoutTimer_Elapsed;
}

private void TimeoutTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    // 关闭等待窗口
    HideWaitForm();
    if (State != EditorStateEnum.ConectedServer)
    {
        Comm.InfoMessage("连接服务器超时!请稍后重试");
    }
}

Csharp

深色版本

1using System;
2using System.Threading;
3using System.Windows.Forms;
4using Sunny.UI;
5
6namespace SunnyUIExample
7{
8    public partial class Form1 : Form
9    {
10        private Timer timeoutTimer;
11
12        public Form1()
13        {
14            InitializeComponent();
15        }
16
17        private void button1_Click(object sender, EventArgs e)
18        {
19            // 显示等待窗口
20            UIWaitForm.ShowWaitForm(this);
21
22            // 启动定时器
23            StartTimeoutTimer(TimeSpan.FromSeconds(5)); // 设置超时时间为 5 秒
24        }
25
26        private void StartTimeoutTimer(TimeSpan timeout)
27        {
28            // 创建定时器
29            timeoutTimer = new Timer(CloseWaitForm, null, timeout, Timeout.Infinite);
30        }
31
32        private void CloseWaitForm(object state)
33        {
34            // 关闭等待窗口
35            UIWaitForm.CloseWaitForm(this);
36        }
37    }
38}

代码解释

  1. 导入命名空间

    • 导入 SystemSystem.Threading 和 System.Windows.Forms 命名空间,它们分别用于基本类型、定时器和 Windows 表单。
    • 导入 Sunny.UI 命名空间,用于使用 SunnyUI 控件。
  2. 创建定时器

    • 在 StartTimeoutTimer 方法中创建一个 Timer 对象,并设置一个超时时间。当超时时间到达时,将调用 CloseWaitForm 方法。
  3. 显示等待窗口

    • 使用 UIWaitForm.ShowWaitForm 方法显示等待窗口。
  4. 关闭等待窗口

    • 在 CloseWaitForm 方法中使用 UIWaitForm.CloseWaitForm 方法关闭等待窗口。
  5. 按钮点击事件

    • 在按钮点击事件中调用 StartTimeoutTimer 方法来启动定时器,并显示等待窗口。

注意事项

  • 确保您的项目已经安装了 SunnyUI,并且在项目中引用了 SunnyUI 命名空间。
  • 使用 ShowWaitForm 和 CloseWaitForm 方法时,确保传入的参数是正确的窗口实例。
  • 如果您的应用程序中有多个窗口需要使用等待窗口,请确保每个窗口都独立管理等待窗口的显示和关闭。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值