-1
지난 번 질문과 비슷한 질문이 있지만 벽에 얼마나 많은 충격을 받았는지에 대한 해결책은 나오지 않습니다. 문제는 메시지 상자가 한 번만 열리 며 documentCompleted
에서 탈퇴 한 다음 종료해야하는 메시지 상자가 너무 많이 생성된다는 것입니다. 다시 한 번 감사드립니다!{다시} C# MessageBox가 두 번 이상 생성되었습니다.
private void textBox4_TextChanged(object sender, EventArgs e)
{
if (textBox4.Text.Length >= 3)
{
timer1.Enabled = true;
}
}
private void timer1_Tick_1(object sender, EventArgs e)
{
if (textBox4.Text != "")
{
webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.Navigate("https://worldofwarcraft.com/en-gb/search?q=" + textBox4.Text);
webBrowser1.DocumentCompleted += GetImg; //sub here
}
}
private void GetImg(object sender, WebBrowserDocumentCompletedEventArgs e)
{
string img_url = "";
foreach (HtmlElement el in webBrowser1.Document.GetElementsByTagName("div"))
{
if (el.GetAttribute("className") == "Avatar-image")
{
img_url = (el.OuterHtml).Substring(el.OuterHtml.IndexOf("https"));
img_url = img_url.Substring(0, img_url.IndexOf(")"));
pictureBox1.ImageLocation = img_url;
}
else if (el.GetAttribute("className") == "Character-level")
{
textBox5.Visible = true;
label7.Visible = true;
string lvl_url = "";
lvl_url = (el.InnerHtml).Substring(3);
lvl_url = lvl_url.Substring(0, lvl_url.IndexOf("<"));
textBox5.Text = lvl_url;
DialogResult YESNO = MessageBox.Show("Is this your character?", "Select your char", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (YESNO == DialogResult.Yes)
{
// clean up
webBrowser1.DocumentCompleted -= GetImg; //unsub here
pictureBox1.Enabled = false;
timer1.Dispose();
break;
}
}
}
}
당신은 내 친구 천재입니다 :). 왜 이런 일이 일어나고 있는지 설명하기 위해 신경 써야합니까? – Nanyo
물론, 기본적으로 Start() 또는 Enable timer (타이머 활성화)를 선택하면 타이머가 중지 될 때까지 타이머가 계속 실행됩니다. GetImg 메서드에서 "Dispose"를 사용하고 있지만 GetImg 메서드는 DocumentCompleted에서만 호출되며 (다운로드를 시작한 후 많은 시간이 걸릴 수 있음) 타이머가 여러 번 실행될 수 있습니다. timer1_Tick_1 메소드를 여러 번 반복). 그게 도움이 되었습니까? –
나는 고맙습니다, 해결 된 것으로 표시됨 :) – Nanyo