如何在 C# 中进行处理时显示“请稍候”消息框
本文关键字:请稍候 消息 显示 处理 | 更新日期: 2023-09-27 18:33:24
我有一个Windows应用程序,其中我使用Web引用来显示特定用户帐户中的当前SMS余额。这是我正在使用的代码:
Thread t1 = new Thread(new ThreadStart(ShowWaitMessage));
t1.Start();
XmlNode xmlnde = ws.BSAcBalance(txtLoginId.Text, txtPassword.Text);
string sResponse = xmlnde.ChildNodes[0].InnerXml;
if (sResponse.Contains("Authentication Failed"))
{
t1.Abort();
MessageBox.Show("Invalid login id or password !", "Information", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
t1.Abort();
MessageBox.Show("Total balance in your account is Rs : " + sResponse , "Information", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
public void ShowWaitMessage()
{
MessageBox.Show("Please Wait ......");
}
ws.BSAcBalance是将应用程序连接到Web的方法,执行大约需要2到3秒。同时,我想显示一条"请稍候"消息,我正在尝试使用该消息线程并通过消息框显示消息。现在,一旦完成所需的操作,我希望隐藏"请稍候"消息框,但这不会发生。我该怎么办?
MessageBox
旨在接受用户的输入。因此,它不提供任何以编程方式关闭它的"本机"手段。您有 2 个选项:
选项 1.
a) 定义一个新的类WaitForm
,派生自System.Windows.Forms.Form
;
b) 在WaitForm
中定义公共方法CloseMe
,一旦从外部调用,它将执行Form.Close()
。
需要显示等待消息并调用其继承方法 ShowDialog() 时,创建一个 WaitForm
实例。
d) 操作完成后,从线程调用CloseMe
。
选项 2:(强制关闭消息框)
使用Windows API函数FindWindow
,这不是.NET的本机函数。因此,您必须包括:
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
- 然后,一旦操作完成,调用
IntPtr hWnd = FindWindowByCaption(IntPtr.Zero, <YourWaitMessageBoxTitle>);
if (hWnd.ToInt32() != 0) PostMessage(hWnd, WM_CLOSE, 0, 0);