【问题标题】:Pass bool value from javascript to c# using invokescript使用invokescript将bool值从javascript传递给c#
【发布时间】:2012-01-06 18:02:22
【问题描述】:

我有这个代码:

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# 中的调试控制台获取任何错误消息(尽管如果有人想指出我正确的方向,那么我可以回来发布它)。

我最终想要做的是有一个脚本,如果我在我的网络浏览器中编辑,它会阻止表单关闭。 (但我似乎无法到达第一行!)

我做错了吗?如果是这样,那有什么问题呢?

谢谢

【问题讨论】:

  • 我认为你的返回类型没有被正确捕获。为什么不尝试通过函数 GetType 获取类型以查看是否返回布尔值。您可以使用 Convert.ToBool(webBrowser1.Document.InvokeScript("isEditing")) 显式转换以检查它是否返回某些内容。
  • 这可能会给你一些有用的信息 -- msdn.microsoft.com/en-us/library/be9zzz62.aspx

标签: c# javascript winforms browser


【解决方案1】:

请注意,如果InvokeScript() 调用抛出异常(例如,如果isEditing 不存在),该异常将被表单捕获并中止关闭请求。

这可以解释为什么您的代码永远不会到达 MessageBox.Show("End"); 并且不会关闭表单。

您应该能够在 Visual Studio 的输出窗口中看到任何捕获的异常信息,或者您可以通过转到 Debug->Exceptions 菜单并检查公共语言运行时异常选项来强制 Visual Studio 中断任何异常。

【讨论】:

    猜你喜欢
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    相关资源
    最近更新 更多