c# – 最小化应用程序表单会导致模式窗体关闭,但不会关闭MessageBox

c# – 最小化应用程序表单会导致模式窗体关闭,但不会关闭MessageBox,第1张

概述如果我在打开模式对话框时以编程方式最小化应用程序的表单,则会关闭该模式对话框. 但是,如果我在MessageBox打开时以编程方式最小化应用程序的形式,则MessageBox不会关闭(即,当我将应用程序恢复到正常窗口状态时,消息框仍然显示). 这是我展示差异的示例代码: public partial class Form1 : Form { // ... 如果我在打开模式对话框时以编程方式最小化应用程序的表单,则会关闭该模式对话框.

但是,如果我在MessageBox打开时以编程方式最小化应用程序的形式,则MessageBox不会关闭(即,当我将应用程序恢复到正常窗口状态时,消息框仍然显示).

这是我展示差异的示例代码:

public partial class Form1 : Form    {        // ...         private voID showMessageBoxBtn_Click(object sender,EventArgs e)        {            timer1.Start();            // This MessageBox does *not* get closed when the windowstate of Form1 is set to minimized in timer1_Tick            MessageBox.Show(this,"MessageBox");        }        private voID formShowDialogBtn_Click(object sender,EventArgs e)        {            timer1.Start();            // This form gets closed when the windowstate of Form1 is set to minimized in timer1_Tick            Form2 form2 = new Form2();            form2.ShowDialog();         }        private voID timer1_Tick(object sender,EventArgs e)        {            windowstate = Formwindowstate.Minimized;            timer1.Stop();        }    }

题:

有没有办法让Form表现得像MessageBox?

解决方法 您所看到的是Winforms内置的对策的副作用,以处理对话可用性问题,MessageBox()函数没有的对策.它们可能与windows 98更相关,windows 98最初是Winforms的重要目标 *** 作系统,很久以前我才能准确记住.

一个重要的可用性问题是当您显示一个对话框并且它被最小化时会发生什么.一个对话框禁用应用程序中的所有其他窗口,因此您无法再激活它们.该对话框应将其ShowInTaskbar属性设置为false.用户现在遇到问题,没有简单的方法可以回到对话框.没有什么可点击的.

Winforms通过自动关闭对话框来避免此陷阱.如您所知,MessageBox不会这样做.它也无法合理地做到这一点,它没有一个好的方法来返回“对话框被取消”状态代码.

值得注意的是,这个陷阱仍然存在.在我的Win8机器上,我可以单击禁用的表单的任务栏按钮,让它在前台移回.但是这会激活禁用的表单而不是消息框.如果消息框在该表单后面,那么主要的UI blooper在那里并且令人讨厌.

所以回答你的问题:不.功能,而不是错误.

总结

以上是内存溢出为你收集整理的c# – 最小化应用程序表单会导致模式窗体关闭,但不会关闭MessageBox全部内容,希望文章能够帮你解决c# – 最小化应用程序表单会导致模式窗体关闭,但不会关闭MessageBox所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1217908.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存