运行/调试时,调用MessageBox或Microsoft.VisualBasic.Interaction.MsgBox挂起而不显示任何对话框。我认为它被封锁了,但是没有看到如何解决这个问题的例子。
答案 0 :(得分:5)
我正在为您提供一步一步的指示,我希望它有所帮助:
<强>制备强>
您需要在LinqPad编辑器中按 F4 添加引用。查询属性对话框打开。
在那里,使用添加... 添加程序集Microsoft.VisualBasic.dll
并切换到标签其他命名空间导入。键入Microsoft.VisualBasic
并单击确定关闭对话框。
一般用法
最后,您可以按如下方式使用它:
void Main()
{
Interaction.MsgBox("Hello");
}
注意: Microsoft.VisualBasic适用于C#以及VB.NET,但此示例使用C# Program
设置。
请注意,如果您使用多台显示器,则消息框可能会显示在其他显示器上,而不会显示在前台,因此您可能不会注意到它。
我建议您强制以这种方式在前台显示它:
Interaction.MsgBox("Hello", MsgBoxStyle.MsgBoxSetForeground);
但是你不能强迫它在特定的显示器上显示。
按钮和其他参数
如果您需要了解有关参数的更多信息,例如标题,要显示的按钮等,您可以查看 here at MSDN 。
例如,要显示中止,重试,忽略对话框并将重试作为默认按钮( DefaultButton2 ),您可以使用:< / p>
MsgBoxResult result =
Interaction.MsgBox(Title: "Critical Error", Prompt: "Cannot read file",
Buttons: MsgBoxStyle.MsgBoxSetForeground | MsgBoxStyle.AbortRetryIgnore
| MsgBoxStyle.Critical | MsgBoxStyle.DefaultButton2);
同样,要将其他按钮设置为默认值:中止将是 DefaultButton1 ,而忽略将是 DefaultButton3。您只能指定其中一个,如果您没有指定它,则假定 DefaultButton1 。
检查结果
用户点击后,您可以查询变量result
以找出单击了哪个按钮(MsgBoxResult枚举),即
if (result==MsgBoxResult.Retry)
{
Console.WriteLine("Retrying...");
}
提示:在 LinqPad 中,您还可以为命名空间添加别名。如果您不想每次都输入Interaction.MsgBox
,可以按 F4 ,转到标签其他命名空间导入,然后输入{{1}单击确定关闭对话框。
然后,您可以使用Dlg=Microsoft.VisualBasic.Interaction
代替Dlg.MsgBox(...)
。