C#,Windows Form,Messagebox在上面不起作用

我有一些MessageBox,我的代码如下:
MessageBox.Show(new Form(){TopMost=true,TopLevel=True},"Message","Title",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);

为了更好的示例,我为FormClosing事件执行此操作:

private void Example_FormClosing(object sender,FormClosingEventArgs e){
MessageBox.Show(new Form(){TopMost=true,"Really close?"," Program",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);
}

但是,几乎每次我都要在我的计算机上更改Window(比如返回Visual Studio),然后才能看到我的消息框,而且这不是用户友好的,而且非常烦人.

我确认我的主要表单不在TopMost = true中,我只尝试了TopMost或只是TopLevel,StartPosition = FormStartPosition.CenterScreen但没有任何效果.

[更新]

我试过了:

private void Example_FormClosing(object sender,FormClosingEventArgs e){
    MessageBox.Show(this.Owner,MessageBoxIcon.Information);
    }

我想把我的messageBox放在我的窗口前面而不必更改窗口来查看它,因为它就像在当前窗口后面.

你有想法解决这个问题吗?

解决方法

给定一个Form的实例,你可以像这样调用一个MessageBox:
MessageBox.show(表单,“消息”,“标题”); ( Check the doc for other parameters.)

但是,如果你想从后台线程(例如:BackgroundWorker)调用它,你必须像这样使用Form.Invoke():

form.Invoke((MethodInvoker)delegate
{
   MessageBox.show(form,"Title");
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


c语言数组越界会怎么样
c语言指针怎么等于数组
c语言数组怎么存入文字
c语言中怎么显示数组
c语言数组元素怎么选
c语言数组怎么累加
c语言数组符号怎么输入
c语言怎么用长数组
c语言数组函数怎么输入
c语言数组怎么去掉差异
c语言怎么求解数组
c语言数组怎么用变量
c语言怎么申明数组
c语言怎么控制数组
c语言怎么计算数组长度
c语言数组怎么插星号
c语言数组怎么加长度
c语言中怎么输出数组
c语言怎么记住数组边界
c语言数组怎么输入符号