使用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”))显式转换,以检查其是否返回某些内容。这可能会为您提供一些有用的信息--