2009-07-30 128 views
0

我有一个创建自定义的快捷键为我的应用程序, 当CTRL + ALT + Q的用户按下按键组合,i显示了 一个消息框“你确定你想注销?“然后,如果点击 是,我退出应用程序。显示messagebox.show只有一个实例在C#

问题: 我想确保只有消息框的实例显示。 无论用户按多少次快捷键。

目前它显示多个消息框,按多个 快捷方式。

如何克服这一点?

+0

AFAIK,msgbox应该是模态。自定义键盘快捷键如何设置?是否与菜单快捷方式相同(Ctrl + S =文件 - >保存)? – shahkalpesh 2009-07-30 03:11:30

+3

为什么不让消息框模态?应用程序在消息框对话框关闭之前无法使用? – Wayne 2009-07-30 03:11:42

+0

你是如何创建快捷方式的?你在使用`System.Windows.Forms.MessageBox`还是其他的东西? – drs9222 2009-07-31 02:03:57

回答

-1

你会想让你的应用程序单个实例,所以它只能启动一次。

Single Instance App

1

一个快速和肮脏的方法是有一个类级布尔变量,跟踪用户试图退出。如果是,则设置为true,并且显示对话框的例程可以检查该标志,然后返回而不执行任何操作。

0

我想你可以创建自己的形式和使用mymessageboxform.show()方法,并检查其对话结果。

2

MSDN

一个消息框是一个模式对话框, 这意味着没有输入(键盘或 鼠标点击)除了模式窗体上 对象可以发生。程序 必须隐藏或关闭模式形式 (通常响应某些用户 操作),然后才能输入到另一个表单 。

在connect.microsoft.com上提交一个错误!


以CK的评论考虑......如果你是显示一个自定义对话框(表格),那么你需要使用Form.ShowDialog()调用的形式,而不是显示()。