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

8

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


它不应该被阻止。以下链接是否适用于您?http://share.linqpad.net/942ift.linq - Joe Albahari
2
另一个选项是使用 Console.ReadLine() 或 Util.ReadLine()。 - Joe Albahari
如果这个答案对您有用,请将其标记为答案。 - Matt
3个回答

7

我将提供一步步的指导,希望能帮到您:

准备工作

您需要在LinqPad编辑器中按下F4,添加引用。查询属性对话框会打开。

在此处使用Add...添加程序集Microsoft.VisualBasic.dll并切换到选项卡Additional Namespace Imports。输入Microsoft.VisualBasic并通过点击OK关闭对话框。

注意:虽然我们使用VisualBasic的DLL,但是我们可以在没有任何限制的情况下在C#中使用它。由于它是在.NET中编译的,因此它可以被任何.NET语言使用。因此,本答案中的说明适用于C#,但同样地,您也可以在VB.NET中使用它(只需在Linqpad中使用语言下拉菜单进行选择)。


常规用法

最后,您可以按照以下方式使用它:

void Main()
{
    Interaction.MsgBox("Hello"); 
}

注意:Microsoft.VisualBasic可以与C#以及VB.NET一起使用,但是此示例正在使用C#程序设置。

请注意,如果您使用多个显示器,则消息框可能会出现在另一个显示器上,并且不在前台显示,因此您可能不会注意到它。

我建议您通过以下方式强制在前台显示:

Interaction.MsgBox("Hello", MsgBoxStyle.MsgBoxSetForeground);       

但是你不能强制将其显示在特定的监视器上。

按钮和其他参数

如果您需要了解更多关于参数,例如标题、要显示的按钮等,您可以查看 MSDN 这里

例如,要显示一个带有重试作为默认按钮(DefaultButton2)的中止、重试、忽略对话框,您可以使用:

MsgBoxResult result =
    Interaction.MsgBox(Title: "Critical Error", Prompt: "Cannot read file",
        Buttons: MsgBoxStyle.MsgBoxSetForeground | MsgBoxStyle.AbortRetryIgnore     
                 | MsgBoxStyle.Critical | MsgBoxStyle.DefaultButton2);

同样地,要将其他按钮设置为默认值:Abort 将是 DefaultButton1,而 Ignore 将是 DefaultButton3。您只能指定其中一个,默认情况下假定为DefaultButton1,如果不指定任何一个。

检查结果

用户点击后,您可以查询变量 result 来查找哪个按钮被点击了(MsgBoxResult 枚举)。
if (result==MsgBoxResult.Retry)
{
    Console.WriteLine("Retrying...");
}

提示:LinqPad中,您还可以为命名空间添加别名。如果您不想每次都输入Interaction.MsgBox,您可以按F4,转到其他命名空间导入选项卡,在那里输入Dlg=Microsoft.VisualBasic.Interaction,然后通过单击OK关闭对话框。 然后,您可以使用Dlg.MsgBox(...)代替Interaction.MsgBox(...)


有关LinqPad的更多信息,请访问StackOverflow上的此处此处


2
你也可以这样做:

Util.RawHtml("<script>alert('hello world');</script>").Dump();

1
下面的代码对我有效,我正在使用LINQPad 7。

enter image description here

我的问题是当我在第二个显示器上运行LINQpad时,弹出对话框总是显示在我的主显示器上。(感觉像被阻塞了,当我忘记它时)

这段代码是从https://dev59.com/n2865IYBdhLWcg3wYNfj#63101136复制的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接