Клик на HtmlElement

289
28 мая 2017, 19:02

Подскажите, пожалуйста, в чём проблема. Я разбиваю htmldocumnet из webbrowser на отдельные htmlelemet-ы и для каждого создаю ивент клик, но проблема в том, что при одном клике по веб браузеру данный ивент срабатывает несколько раз(около 10). Как избавиться от данной фантомности?

private void webBrowser1_DocumentCompleted_1(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        HtmlElementCollection tags = webBrowser1.Document.All;
        foreach (HtmlElement element in tags)
        {
            element.Click += new HtmlElementEventHandler(element_Click);
        }
    }
void element_Click(object sender, HtmlElementEventArgs e){...}
Answer 1

Потому что событие click "всплывает" - обработчики (у кого они есть) вызываются для всех элементов в цепочке родителей. Избежать этого можно, вызвав метод объекта event stopPropagation - в javascript, или в Вашем случае:

private void element_Click(object sender, HtmlElementEventArgs e)
{
  e.BubbleEvent = false;
}

Пример в javascript

$(".outer").click(function(e){ 
  console.log("in outer"); 
}); 
 
$(".letBubble").click(function(e){ 
  console.log("in inner - let bubble"); 
}); 
 
$(".stopBubble").click(function(e){ 
  e.stopPropagation(); 
  console.log("in inner - stop bubble"); 
});
.inner { 
  border-style:solid; 
  border-width:1px; 
  background-color:red; 
  width:200px; 
  height:60px; 
} 
 
.outer { 
  padding:10px; 
  background-color:green; 
  width:300px; 
  height:150px; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="outer"> 
  <div class="inner letBubble">let click event bubble to parent</div> 
  <br/> 
  <div class="inner stopBubble">stop click event on this element</div> 
</div>

READ ALSO
Кеширование данных в SQL CLR функции

Кеширование данных в SQL CLR функции

Допустим, есть CLR функция, которая имеет статический словарь, где сохраняется некоторый кеш

242
Как обрезать Shapes по PathFigure?

Как обрезать Shapes по PathFigure?

Здравствуйте! Не получается каким-либо образом обрезать Shapes элемент по контуру PathFigureПодскажите пожалуйста, куда глубже копать

274
Запуск приложения WinForm с параметрами из cmd

Запуск приложения WinForm с параметрами из cmd

Всем привет как узнать что приложение было запущено с определенным параметром из cmd? Есть определенный параметр "Show Version" и при запуске cmd > testexe...

387