在运行/调试时,调用MessageBox或Microsoft.VisualBasic.Interaction.MsgBox时会挂起而不显示任何对话框。我认为它被阻止了,但是没有看到任何解决此问题的示例。
在运行/调试时,调用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#程序
设置。
请注意,如果您使用多个显示器,则消息框可能会出现在另一个显示器上,并且不在前台显示,因此您可能不会注意到它。
我建议您通过以下方式强制在前台显示:
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);
result
来查找哪个按钮被点击了(MsgBoxResult 枚举)。if (result==MsgBoxResult.Retry)
{
Console.WriteLine("Retrying...");
}
提示:在LinqPad中,您还可以为命名空间添加别名。如果您不想每次都输入Interaction.MsgBox
,您可以按F4,转到其他命名空间导入选项卡,在那里输入Dlg=Microsoft.VisualBasic.Interaction
,然后通过单击OK关闭对话框。
然后,您可以使用Dlg.MsgBox(...)
代替Interaction.MsgBox(...)
。
Util.RawHtml("<script>alert('hello world');</script>").Dump();
我的问题是当我在第二个显示器上运行LINQpad时,弹出对话框总是显示在我的主显示器上。(感觉像被阻塞了,当我忘记它时)