【问题标题】:Stop webBrowser control if document does not complete如果文档未完成,则停止 webBrowser 控制
【发布时间】:2014-08-19 11:18:35
【问题描述】:

我正在使用 C# webBrowser 控件,使用 DocumentCompleted -

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

然后我正在导航 -

webBrowser1.Navigate("myUrl")

但是,如果对该服务器的请求挂起,即页面在 10 秒后未完成,我该如何实现 webBrowser1.Stop();

我确实尝试实现一个计数,如果它达到 20 即 webBrowser1_DocumentCompleted 进入无限循环(页面不会完成)然后停止但不确定这是否是最直接的 htis 方法?

【问题讨论】:

    标签: c# navigation browser


    【解决方案1】:

    这可能是一种非常糟糕的做法,所以我很抱歉,但您可以使用带有计时器的布尔控件来检查文档是否已完成,如果尚未完成,请关闭 webBrowser。

    首先在表单中添加一个计时器(假设它称为 Timer1),将时间间隔设置为 1000 并创建一个 int 和 bool 控件。

         int timeLeft;
         bool hasCompleted = false;
    

    正常运行你的 URL 并启动你的计时器

         webBrowser1.Navigate("myUrl");
         timeLeft = 10;
         Timer1.Start();
    

    你的计时器应该是这样的;

    private void timer1_Tick(object sender, EventArgs e)
        {
            if(timeLeft > 0) {
                timeLeft = timeLeft - 1;
            }
            if(timeLeft = 0 && !hasCompleted)
            {
                timer1.Stop();
                webBrowser1.Stop();
            }
            else{
                timer1.Stop();
            }
        }
    
      private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
       {
            hasCompleted = true;
            //your code
    }
    

    【讨论】:

    • 我看到这个方法的问题是如果 webBrowser1_DocumentCompleted 没有真正完成呢?
    • 为什么不能完成?我已经对此进行了测试,如果浏览器未完成,它将停止网络浏览器。如果它完成了,我以 google.com 为例,然后只是计时器停止并且网络浏览器保持打开状态。
    【解决方案2】:

    我尝试使用计时器来实现这一点。 我刚刚添加了一个计时器并设置了时间间隔。

    这里是代码

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
    
            timer1.Tick += timer1_Tick;
            webBrowser1.DocumentCompleted += new 
                WebBrowserDocumentCompletedEventHandler( webBrowser1_DocumentCompleted);
            LoadBrowser();
        }
    
        void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            webBrowser1.DocumentText = "Cancelled";            
        }
    
        void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (timer1.Enabled)
            {
                MessageBox.Show("Page Loaded succesfully");
            }
        }
    
        private void LoadBrowser()
        {
            timer1.Enabled = true;
            webBrowser1.Url = new Uri("http://www.microsoft.com");
        }
    
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-27
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多