繁体   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