0

解決するのは少し難しいです.. :D 最初に私の英語を解決する必要があります :D :D この配置のようにウェブブラウザのスナップショットを保存したい //最初: ユーザーがリンクラベルをクリックする // 後: プログラムがブラウザをナビゲートする // 最後: 5 秒後、プログラムは Web ブラウザのスナップショットを取得します。私はこれのためのこのコードを持っています.しかし..

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);
}

英語が下手で申し訳ありません:(私はこれ以上詳細に説明することはできません.編集:私はより詳細に説明しようとします...これは私のWebブラウザの新しいタブ機能であり、お気に入りのスクリーンショットを撮りたい.ユーザーが新しいタブを開くと、ユーザーが表示されます小さな写真のお気に入り...したがって、お気に入りに写真がない場合は、初めてです。ユーザーがリンクをクリックすると、お気に入りに移動し、ドキュメントが完了すると、スクリーンショットが撮られます..それだけです 新しいタブ

4

2 に答える 2

1

あなたの投稿とコメントから私が理解できるのは、あなたには 6 つLinkLabelの s (named linkLabel1to linkLabel6) があるということです。ユーザーがいずれかのリンクをクリックすると、WebKitBrowserコントロールは URL (linklabel のテキスト) に移動する必要があり、ドキュメントが読み込まれると、自動的にスクリーンショットを取得する必要があります。

ここで、異なるリンクラベルですべて同じことをしたいので、異なるリンクラベルのクリックを処理するイベント ハンドラーを 1 つだけ作成する必要があります。_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 に答える