运行/调试时,对 MessageBox 或 Microsoft.VisualBasic.Interaction.MsgBox 的调用会挂起而不显示任何对话框。我认为它被阻止了,但没有看到关于如何解决这个问题的例子。
我正在为您提供逐步说明,希望对您有所帮助:
您需要在 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 将是 DefaultButton1 而 Ignore 将是 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(...)
.
你也可以这样做:
Util.RawHtml("<script>alert('hello world');</script>").Dump();
下面的代码对我有用,我在 LINQPad 7 上。
我遇到的“问题”是当我在第二台显示器上运行 LINQpad 时,弹出对话框始终显示在我的主显示器上。 (感觉被屏蔽了,当我忘记了)