2016-04-09 46 views
-3

我需要根據以下html元素的可見性執行方法。在C#webbrowser控件中檢查這個遞歸代碼

<div id="loading" style="height: 201px; width: 793px; visibility: hidden;"> 

我用來檢查可見性屬性的方法正常工作。

public bool isloading() 
        { 
         string v; 

        v= webBrowser1.Document.GetElementById("loading").Style; 
        if (v.Contains("visible")) { return true; } 
        if (v.Contains("hidden")) { return false; } 
        else 
         return false; 

        } 

我正在像這樣使用它。該應用在遇到此代碼時會凍結。需要幫忙。我不能使用webbrowser1.documentcompleted事件,因爲這是一個AJAX調用。我唯一的選擇是檢查「可見性」屬性。我想讓循環繼續檢查isloading()並執行universalclickbutton();如果這個循環沒有執行,每當isloading()爲false時。我知道它是在一個方法中調用一個方法。有人請給我替代品嗎?

當涉及到上面的代碼時,應用程序會凍結,因爲它可能是遞歸的嗎?

+0

不,應用程序凍結,因爲你處於一個緊密的循環中,從來沒有給它一個執行其他任何事情的機會。但它不會永遠運行,因爲最終你會得到一個'StackOverflowException'。你需要重新思考你的方法。查看是否有可以訂閱的事件,在加載完成時執行,然後在那個時候調用您的按鈕點擊功能。 –

+0

即時通訊沒有其他可以訂閱的活動(瀏覽互聯網了幾個小時)。是的,我堅持我的方法。有什麼辦法可以隨時檢查html元素的屬性,然後根據屬性的變化執行一個方法。即時通訊編程新手,請耐心等待:)。 – Dinesh

+0

專業提示:在提問時,不要使用全帽大喊,不要大膽使用,不要求「儘快」幫助 - 這是獲得低投入的好方法。 – halfer

回答

0

取而代之的是,你可以通過使用while循環

while (!isloading()) 
{ 
    universalclcikbutton(); 
} 

所以它會自動調用isloading功能嘗試。

+0

啊。我的錯。將編輯該帖子需要繼續執行該方法,無限循環直到我點擊另一個按鈕。我也試過這個while循環。 我想退出循環時(isloading())和安吉恩我想調用while循環的方法在 – Dinesh

+0

根據你的答案代碼它只會執行一次。 我wnat繼續執行該方法,直到我按下按鈕(當然,當isloading()= true我不想執行,但我想循環繼續) – Dinesh

0

得到了我的答案。原來我比我想象的更多新手。 我剛剛從工具箱中使用了一個計時器控件。

在timer_tick事件

我執行

private void timer1_Tick(object sender, EventArgs e) 
        { 
         if (!isloading()) { universalclcikbutton(); } 

        } 

和每當我wnated開始我universalbuttonclick();方法我用timer.start();和timer.stop();停止循環。結果很簡單