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

问题描述 投票:0回答:3

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

c# vb.net linqpad
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# Program
设置。

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

我建议你这样强制在前台显示它:

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

但是你不能强制它显示在特定的显示器上。


按钮和其他参数

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

例如,要显示一个带有Retry作为默认按钮(DefaultButton2)的Abort,Retry,Ignore对话框,您可以使用:

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

同样,要将其他按钮设置为默认值:Abort 将是 DefaultButton1Ignore 将是 DefaultButton3。 您只能指定其中一个,如果您不指定它,则假定为 DefaultButton1 .


检查结果

用户点击后,可以查询变量

result
,找出点击了哪个按钮(MsgBoxResult枚举),即

if (result==MsgBoxResult.Retry)
{
    Console.WriteLine("Retrying...");
}

提示:LinqPad 中,您还可以为命名空间添加别名。如果您不喜欢每次都输入

Interaction.MsgBox
,可以按F4,转到选项卡Additional Namespace Imports,在那里输入
Dlg=Microsoft.VisualBasic.Interaction
,然后单击OK关闭对话框。 然后你可以使用
Dlg.MsgBox(...)
而不是
Interaction.MsgBox(...)
.


可以在 StackOverflow 中找到更多与 LinqPad 相关的东西 这里那里


1
投票

你也可以这样做:

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

0
投票

下面的代码对我有用,我在 LINQPad 7 上。

我遇到的“问题”是当我在第二台显示器上运行 LINQpad 时,弹出对话框始终显示在我的主显示器上。 (感觉被屏蔽了,当我忘记了)

代码复制自https://stackoverflow.com/a/63101136/2055187

© www.soinside.com 2019 - 2024. All rights reserved.