如何在LinqPad查询中显示MessageBox对话框?

时间:2015-08-12 21:22:16

标签: linqpad

运行/调试时,调用MessageBox或Microsoft.VisualBasic.Interaction.MsgBox挂起而不显示任何对话框。我认为它被封锁了,但是没有看到如何解决这个问题的例子。

1 个答案:

答案 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(...)