使用invokescript将bool值从javascript传递到c#
我有以下代码:使用invokescript将bool值从javascript传递到c#,c#,javascript,winforms,browser,C#,Javascript,Winforms,Browser,我有以下代码: private void frmMain_FormClosing(object sender, FormClosingEventArgs e) { bool isEditing = (bool)webBrowser1.Document.InvokeScript("isEditing"); MessageBox.Show("End"); e.Cancel = false; } 程序没有关闭,也没有进入Message
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
bool isEditing = (bool)webBrowser1.Document.InvokeScript("isEditing");
MessageBox.Show("End");
e.Cancel = false;
}
程序没有关闭,也没有进入MessageBox.Show(“End”)代码>取出行bool isEditing=(bool)webBrowser1.Document.InvokeScript(“isEditing”)代码>使其工作(程序退出)
isEditing
是一个javascript函数,如下所示:
function isEditing(){ return editing; } // editing being either true or false
我不知道如何通过c#中的调试控制台获取任何错误消息(尽管如果有人想给我指出正确的方向,我可以回来发布)
我最终想要做的是,如果我在我的web浏览器中编辑表单,使用一个脚本来阻止表单关闭。(但我似乎无法到达第一行!)
我做错了什么?如果是的话,那有什么问题
谢谢请注意,如果InvokeScript()
调用引发异常(例如,如果isEditing
不存在),表单将捕获异常,关闭请求将中止
这可能解释了为什么您的代码永远无法访问MessageBox.Show(“End”)代码>并且不关闭表单
您应该能够在Visual Studio的输出窗口中看到捕获的任何异常信息,或者您可以通过转到Debug->Exceptions
菜单并选中公共语言运行时异常选项,强制Visual Studio在任何异常上断开。我认为您的返回类型没有被正确捕获。为什么不尝试通过函数GetType获取类型,看看是否返回布尔值。您可以使用convert.ToBool(webBrowser1.Document.InvokeScript(“isEditing”))显式转换,以检查其是否返回某些内容。这可能会为您提供一些有用的信息--