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