我不时使用 MessageBox 为用户弹出警报消息。我的特定应用程序可以设置为远程运行,因此有时用户在计算机前,有时用户可能不在计算机前数小时甚至数天。有时我使用 MessageBox 弹出一条警报消息,但一段时间后警报不再相关。例如,我弹出一个警报,指出由于未满足某些条件而无法完成任务。几分钟后,满足条件并开始任务。 MessageBox 不再相关。

在消息不再相关的这些情况下,我希望能够以编程方式关闭 MessageBox。这可能吗?目前我使用以下方法在线程中创建我的 MessageBox 对象:

new Thread(() => MessageBox.Show("Some text", "Some caption")).Start();

我这样做是为了让应用程序可以继续在后台工作,而不会被 MessageBox 停止。有什么建议么?

最佳答案

为什么不制作自定义消息框?你可以让它显示一段固定的时间,或者直到你的应用程序通过代码关闭它。

创建自定义消息框的实例(Form 类的子类)并将其保存为变量(例如 MyMessageBox ),然后使用 MyMessageBox.Show(); 显示它。当你想取下它时,调用 MyMessageBox.Close();
如果在另一个线程中打开它时遇到问题,请尝试调用 MyMessageBox.Invoke(new Action(() => {MyMessageBox.Close();})); 这将在创建 MyMessageBox.Close(); 的同一线程上运行命令 MyMessageBox ,以免引起问题。

关于c# - 在没有用户输入的情况下以编程方式拆除 MessageBox,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19635749/

10-11 15:44