3

Formプログラムで作成したコントロールを使用しています。そのうちの1つは、WebBrowserキャプチャ画像を表示するものです。次に、ユーザーはテキストボックスにキャプチャを入力します。間違っている場合は、フォームが新しいキャプチャ画像で更新されることになっています。Form.Refresh()その後、もう一度呼び出してみDisplayCaptcha()ましたが、機能しなかったため、次の(簡略化された)コードのように解決しました。

public partial class Form3 : Form
{

    public Form3()
    {
        InitializeComponent();
        DisplayCaptchas();
    }

    private void DisplayCaptcha()
    {
        string captcha = "<style>html, body{{padding:0; margin:0 }}</style>" + 
            "<img src=\"http://www.reddit.com/captcha/{0}.png\"></img>";


            WebBrowser webBrowserNofap = new WebBrowser();
            webBrowserNofap.DocumentText = String.Format(captcha, iden);
            ......//rest of the code


    }


    private void button1_Click(object sender, EventArgs e)
    {

        if (wrongCaptcha)
        {
            this.Close();
            Form3 form3 = new Form3(); //this is how I solved the refreshing
            form3.Show();
        }
        else
        {
            Form4 form4 = new Form4();
            this.Close();
            form4.Show();
        }
    }
}

それは機能しますが、これは本当にさわやかではありません。もう一度コントロールを削除しようと思ってDisplayCaptcha()いましたが、その方法がわかりません。要するに、閉じてからリロードする以外に他の解決策はありますFormか?

4

1 に答える 1

3

これを試して:

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            webBrowser1.Navigate("about:blank");
            webBrowser1.Document.Write("<html><head><style>html, body{{padding:0; margin:0 }}</style></head><body><div id='divMain'>&nbsp;</div></body></html>");
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Random r = new Random();
            int number = 0;
            number = r.Next(0, 999999);
            string captcha = "<img src=\"http://www.reddit.com/captcha/{0}.png\"></img>";

            webBrowser1.Document.GetElementById("divMain").InnerHtml = string.Format(captcha, number);
        }
    }
}

ボタンをクリックするたびに、新しい画像が表示されます。リフレッシュしたい場所に置くことができます。

于 2013-02-24T16:46:00.993 に答える