0

这有点难解决..:D首先你应该解决我的英语:D:D我想保存一个像这个位置一样的网络浏览器快照//首先:用户单击链接标签//之后:程序导航我的浏览器//最后: 5 秒后程序将拍摄 webbrowser 的快照。我有这个代码。但是..

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(linkLabel1.Text);

    ///how can i set after 5 seconds take snapshot
    ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).PageScreenshot.Save("thumb1.png", ImageFormat.Png);
}

抱歉英语不好:(我无法解释更详细。编辑:我会尝试更详细地解释...这是我的网络浏览器的新标签功能,我想截取收藏夹。当用户打开新标签后,用户会看到带有小照片的收藏夹...所以,如果收藏夹没有任何图片,那将是第一次。当用户单击链接时,它将导航到收藏夹,然后当文档完成时,它将截屏..仅此而已 新标签

4

2 回答 2

1

从您的帖子和评论中我可以理解的是,您有六个LinkLabels(命名linkLabel1linkLabel6)。当用户单击任何链接时,您的WebKitBrowser控件必须导航到 URL(这是链接标签的文本),并且在加载文档时,它必须自动截取屏幕截图。

现在,由于您想对不同的链接标签做同样的事情,您应该只创建一个事件处理程序来处理不同链接标签的点击。您可以将 _LinkClicked() 事件附加到任何链接标签。您还必须在您的类中定义一些私有字段,该字段将包含上次单击的 LinkLabel。

private LinkLabel _lastClickedLinkLabel = null;

private void linkLabelX_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    // Cast the sender to a LinkLabel object as you want to know which LinkLabel
    // was clicked on
    var senderLinkLabel = sender as LinkLabel;
    if (senderLinkLabel != null)
    {
        ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(senderLinkLabel.Text);
        _lastClickedLinkLabel = senderLinkLabel;
    }
}

现在,当您想在页面加载后截取屏幕截图时,您必须创建DocumentCompleted事件。(不要忘记将它附加到您的 tabControl!)

private void tabControl1_DocumentCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e)
{
    // Save the screenshot
    // you might want to determine the filename dynamically, otherwise the file will be overwritten
    ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).PageScreenshot.Save("thumb1.png", ImageFormat.Png);

    if (_lastClickedLinkLabel != null)
    {
        // Do something here based upon the _lastClickedLinkLabel
    }
}

请注意,我没有这种精确控制的实际经验,我只是使用搜索引擎来查找所有信息。

于 2012-09-24T21:01:07.253 回答
0

我在下面做了这个,我解决了我的问题但是,最后一件事我不能在我的应用程序工作时更改图片..当文件完成时,........

  void Form1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {

        if (_lastClickedLinkLabel.Text == linkLabel1.Text)
        {
            ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).PageScreenshot.Dispose();
            ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).PageScreenshot.Save("thumb1.png", ImageFormat.Png);
            // Do something here based upon the _lastClickedLinkLabel
        }
        if (_lastClickedLinkLabel.Text == linkLabel2.Text)
        {
            ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).PageScreenshot.Save("thumb2.png", ImageFormat.Png);
            // Do something here based upon the _lastClickedLinkLabel
        }
        if (_lastClickedLinkLabel.Text == linkLabel3.Text)
        {
            ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).PageScreenshot.Save("thumb3.png", ImageFormat.Png);
            // Do something here based upon the _lastClickedLinkLabel
        }
        if (_lastClickedLinkLabel.Text == linkLabel4.Text)
        {
            ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).PageScreenshot.Save("thumb4.png", ImageFormat.Png);
            // Do something here based upon the _lastClickedLinkLabel
        }
        if (_lastClickedLinkLabel.Text == linkLabel5.Text)
        {
            ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).PageScreenshot.Save("thumb5.png", ImageFormat.Png);
            // Do something here based upon the _lastClickedLinkLabel
        }
        if (_lastClickedLinkLabel.Text == linkLabel6.Text)
        {
            ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).PageScreenshot.Save("thumb6.png", ImageFormat.Png);
            // Do something here based upon the _lastClickedLinkLabel
        }

    }

当点击链接时,......

private LinkLabel _lastClickedLinkLabel = null;

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            var senderLinkLabel = sender as LinkLabel;           
            if (senderLinkLabel != null)
            {
                ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(senderLinkLabel.Text);
                _lastClickedLinkLabel = senderLinkLabel;

            }




        }

        private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            var senderLinkLabel = sender as LinkLabel;
            if (senderLinkLabel != null)
            {
                ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(senderLinkLabel.Text);
                _lastClickedLinkLabel = senderLinkLabel;

            }
        }

        private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            var senderLinkLabel = sender as LinkLabel;
            if (senderLinkLabel != null)
            {
                ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(senderLinkLabel.Text);
                _lastClickedLinkLabel = senderLinkLabel;

            }
        }

        private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            var senderLinkLabel = sender as LinkLabel;
            if (senderLinkLabel != null)
            {
                ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(senderLinkLabel.Text);
                _lastClickedLinkLabel = senderLinkLabel;

            }
        }

        private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            var senderLinkLabel = sender as LinkLabel;
            if (senderLinkLabel != null)
            {
                ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(senderLinkLabel.Text);
                _lastClickedLinkLabel = senderLinkLabel;

            }
        }

        private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            var senderLinkLabel = sender as LinkLabel;
            if (senderLinkLabel != null)
            {
                ((WebKitBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(senderLinkLabel.Text);
                _lastClickedLinkLabel = senderLinkLabel;

            }
        }
于 2012-09-25T14:17:10.150 回答