如何在 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秒。同时,我想显示一条"请稍候"消息,我正在尝试使用该消息线程并通过消息框显示消息。现在,一旦完成所需的操作,我希望隐藏"请稍候"消息框,但这不会发生。我该怎么办?

如何在 C# 中进行处理时显示“请稍候”消息框

MessageBox旨在

接受用户的输入。因此,它不提供任何以编程方式关闭它的"本机"手段。您有 2 个选项:

选项 1.

a) 定义一个新的类WaitForm,派生自System.Windows.Forms.Form;

b) 在WaitForm中定义公共方法CloseMe,一旦从外部调用,它将执行Form.Close()

c) 当您

需要显示等待消息并调用其继承方法 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);