Я создаю приложение формы окна C#, где пользователь может зарегистрироваться на моем сайте. Программа предназначена для облегчения процесса множественной регистрации с рабочего стола. У меня есть 2 события для регистрации.C# webbrowser documentcomplete событие стреляет дважды
Первое событие:
private void textBox5_TextChanged(object sender, EventArgs e)
{
if (textBox5.Text.Length == 4)
{
// users to enter captcha in this field
button5.Text = "&Copy " + Convert.ToString(listBox2.Items.Count) + " Id";
registerPost();
textBox5.Clear(); //clear the captcha for loading next captcha
}
}
Второе событие:
private void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
validation();
captcha();
}
Теперь метод проверки содержит несколько логика:
private void validation()
{
if (webBrowser2.DocumentTitle.Contains("Referral via Email"))
{
HtmlElementCollection classButton = webBrowser2.Document.All;
foreach (HtmlElement element in classButton)
{
if (element.GetAttribute("className") == "cta-join-btn")
{
element.InvokeMember("click");
}
}
}
else if (webBrowser2.DocumentText.Contains("Security Code does not match."))
{
label9.Text = "&Status : Wrong Captcha";
}
else if (webBrowser2.DocumentText.Contains("exceeded"))
{
label9.Text = "&Status : Exceeded";
if (listBox1.SelectedIndex < listBox1.Items.Count - 1)
{
listBox1.SelectedIndex = listBox1.SelectedIndex + 1;
}
webBrowser2.Navigate(textBox4.Text);
}
else if (webBrowser2.DocumentText.Contains("Oops, you took too long to fill up this field. A new code has been generated for you."))
{
label9.Text = "&Status : Captcha Expired";
}
else if (webBrowser2.DocumentText.Contains("Username is taken."))
{
label9.Text = "&Status : UserName Exist";
textBox3.Text = generateRandomID(Convert.ToInt32(textBox6.Text));
}
else if (webBrowser2.DocumentText.Contains("The email address you entered is already linked to an existing mig33 account! Please enter a different email address."))
{
label9.Text = "&Status : Email Exist";
if (listBox1.SelectedIndex < listBox1.Items.Count - 1)
{
listBox1.SelectedIndex = listBox1.SelectedIndex + 1;
}
webBrowser2.Navigate(textBox4.Text);
}
else if (webBrowser2.DocumentTitle.Contains("Success")) //problem area
{
writeText();
label9.Text = "&Status : Success!!!";
textBox3.Text = generateRandomID(Convert.ToInt32(textBox6.Text));
if (listBox1.SelectedIndex < listBox1.Items.Count - 1)
{
listBox1.SelectedIndex = listBox1.SelectedIndex + 1;
}
webBrowser2.Navigate(textBox4.Text);
}
}
В моей программе есть два ListBox, где listBox содержит отображает идентификаторы и пароль, которые создаются во время выполнения каждого документа. vent и второй список содержат ссылки регистрации, которые должны быть открыты в элементе управления webbrowser.
Все прекрасно работает, кроме случаев условного успеха в методе validation().
Когда программа выполнена и пользователь начинает процесс регистрации, и если пользователь успешно создает идентификатор, элементы списка будут запущены дважды. возможно, потому что, если пользователь успешно зарегистрирован, он перенаправляется на другую страницу, что вызывает осложнение для документа, заполняющего событие.
Я чего-то не хватает, много пробовал, Любая помощь будет высоко оценена.
Возможный дубликат [DocumentCompleted firing несколько раз - принятый ответ StackOverflow не работает] (http://stackoverflow.com/questions/18321872/documentcompleted-firing-multiple-times-accepted-stackoverflow- ответ-не-работа) – Noseratio