我有Form
以编程方式创建的控件。其中一个是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
之外还有其他解决方案吗?
答案 0 :(得分: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'> </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);
}
}
}
每次点击按钮,都会得到一张新图片。您可以将其放在要刷新的位置。