簡體   English   中英

c# DocumentLoadedEvent 未觸發

[英]c# DocumentLoadedEvent not firing

我希望我的程序從網站獲取國際空間站的緯度和經度,所以我有以下代碼:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Diagnostics;
 using System.Threading;
 using System.Speech.Synthesis;
 using System.Windows.Forms;
 using System.Net;

 namespace myprogram
 {
        class Program
        {
                static void Main(string[] args)
                {
                       try
                       {
                              WebBrowser browser1 = new WebBrowser();
                              browser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

                              browser1.Url = new Uri("https://isstracker.spaceflight.esa.int/");
                              browser1.Visible = true;
                              browser1.ScrollBarsEnabled = false;
                              browser1.ScriptErrorsSuppressed = true;
                              browser1.AllowNavigation = false;
                       }
                       catch (Exception e) 
                       {
                            Console.WriteLine(e.ToString());
                       }

                       Main(null); //don't know if this is the best way to keep the program from closing
                }
                static void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
                {
                     Console.WriteLine("iss page loaded");
                     if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
                         return;
                     string lat = (sender as WebBrowser).Document.GetElementById("isst_lat").InnerText;
                     string lon = (sender as WebBrowser).Document.GetElementById("isst_lon").InnerText;
                     Console.WriteLine("latitude is" + lat + ",longitude is" + lon);
        
                }
        }
 }

當我運行程序時, WebBrowserDocumentCompletedEvent不會觸發。 我一直在尋找解決方案,但還沒有找到。 如果有人有靈魂,請提前感謝您。

伙計,您的程序實際上在它退出之前就退出了,它會觸發“文檔加載”事件,甚至會引發堆棧溢出異常(不是 rly ......它超出了最大調用堆棧,我猜......不記得了) .

現在,回答你的問題:

第一個。 看,您的程序是控制台應用程序,而不是 Windows Forms 應用程序。 檢查它們之間的區別( https://docs.microsoft.com/pt-br/dotnet/csharp/tutorials/console-teleprompterhttps://docs.microsoft.com/en-us/windows/uwp/ launch-resume/app-lifecycle )並注意它們的方式不同。 因此,如果您想自己查看 web 瀏覽器,您應該使用 windows forms 應用程序。 相反,如果您只是願意解析和轉換 Web 請求的響應(我猜這里就是這種情況),請搜索“WebClient.DownloadString Tutorial”並享受。 ;)

第二。 這不是阻止程序關閉的最佳方法...既然您已經評論過它(“//不知道這是否是阻止程序關閉的最佳方法”)我會為您指出一些明確方向...

早在我們程序員過去常常在軟木密封的瓶子里喝蘇打水,騎馬,打獵我們的食物和東西的日子里,程序曾經被稱為“命令提示符”......就像 git bash 你需要知道命令在“無用戶界面”環境中使用它們......

是的! 沒有USER INTERFACE ,您必須真正鍵入每個命令(例如單擊按鈕),並在一行中傳遞參數(例如,您放入文本框中的內容,或選中 state 的復選框)以執行任何操作。 ., 就像永遠一樣,但傷疤(經驗教訓)仍然存在!

防止控制台關閉的一種方法(不能告訴你“最好的”。當然可以告訴你我最喜歡的那個。)是聽命令。,當用戶輸入文本行時。 你檢查這行是否是一個有效的命令,如果不是,告訴他。 如果用戶輸入您的有效“退出”命令。 它關閉了。:. (提示:單詞“While”和“If”是要實現的實際編程模式)

所以,這是一個“指南答案”,而不是“編程自己完成”......如果你需要它,只需在這里評論,我可以為你試一試......只是一個建議:這是更好的學習而不是被別人的幫助所束縛。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM