我想WaitForm
在用户中显示一个,同时做一个很长的后台操作。
我将 aThread
用于这项工作,并在工作完成时使用事件得到通知。
在这种情况下,我想集成一个 DevExpress WaitForm。
此表单可以在作业将要开始时显示(从线程内部或外部),并且可以在完成事件触发时停止。
.ShowWaitForm
from只是显示SplashScreenManager
表格。如何让表单在等待时丢弃窗口消息?
例如:我不希望用户在等待时能够单击按钮和东西。
我想WaitForm
在用户中显示一个,同时做一个很长的后台操作。
我将 aThread
用于这项工作,并在工作完成时使用事件得到通知。
在这种情况下,我想集成一个 DevExpress WaitForm。
此表单可以在作业将要开始时显示(从线程内部或外部),并且可以在完成事件触发时停止。
.ShowWaitForm
from只是显示SplashScreenManager
表格。如何让表单在等待时丢弃窗口消息?
例如:我不希望用户在等待时能够单击按钮和东西。
您必须创建继承的表单并覆盖 SetDescription() 和 SetCaption()。您将根据自己的喜好使用一些图标或动画 gif 来装饰表单。在下面的示例中,我创建了一个名为 MyWaitForm 的表单,并简单地放置了两个标签来显示描述和标题文本。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DXApplication1
{
public partial class MyWaitForm : DevExpress.XtraWaitForm.WaitForm
{
public MyWaitForm()
{
InitializeComponent();
}
public override void SetDescription(string description)
{
base.SetDescription(description);
lbDescription.Text = description;
}
public override void SetCaption(string caption)
{
base.SetCaption(caption);
lbCaption.Text = caption;
}
}
}
这里是 Visual Studio 设计器中所示的 MyWaitForm:
之后,您将使用 Devexpress 代码示例来显示 WaitForm
https://documentation.devexpress.com/#WindowsForms/CustomDocument10832
但是将您的 MyWaitForm 类类型传递给 SplashScreenManager.ShowForm() 方法:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraSplashScreen;
using System.Threading;
namespace WaitForm_SetDescription {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void btnShowWaitForm_Click(object sender, EventArgs e) {
//Open MyWaitForm!!!
SplashScreenManager.ShowForm(this, typeof(MyWaitForm), true, true, false);
//The Wait Form is opened in a separate thread. To change its Description, use the SetWaitFormDescription method.
for (int i = 1; i <= 100; i++) {
SplashScreenManager.Default.SetWaitFormDescription(i.ToString() + "%");
Thread.Sleep(25);
}
//Close Wait Form
SplashScreenManager.CloseForm(false);
}
}
}
据我所知,WaitForm 的当前实现不允许它显示为对话框。我找到了提供此功能的建议:SplashScreenManager - 提供将 WaitForm 显示为模式对话框的功能。因此,您可以跟踪它。
你可以这样使用;
SplashScreenManager.ShowForm(typeof(WaitForm1));
........
your code
........
SplashScreenManager.CloseForm();