2012-01-06 30 views
1

我有這樣的代碼:通行證布爾值

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瀏覽器中編輯時關閉。 (但我似乎無法達到第一行!)

我做錯了什麼?如果是這樣,那麼它有什麼問題?

感謝

+0

我認爲你的返回類型沒有正確捕獲。爲什麼不嘗試通過函數GetType獲取類型以查看是否返回布爾值。你可以顯式地使用Convert.ToBool(webBrowser1.Document.InvokeScript(「isEditing」))來檢查它是否返回一些東西。 – 2012-01-06 18:16:22

+0

這可能會給你一些有用的信息 - http://msdn.microsoft.com/en-us/library/be9zzz62.aspx – 2012-01-06 18:17:20

回答

0

注意,如果InvokeScript()調用拋出異常(例如,如果isEditing不存在),異常會被通過的形式和中止關閉請求抓獲。

這可以解釋爲什麼你的代碼永遠不會到MessageBox.Show("End");並且不關閉表單。

您應該能夠在Visual Studio的輸出窗口中看到任何捕獲到的Exception信息,或者您可以通過轉到Debug->Exceptions菜單並檢查Common Language Runtime Exceptions選項來強制Visual Studio打破任何異常。