Привинчивание событий
От: SanyaT Россия  
Дата: 18.06.04 11:39
Оценка:
Help!
Программлю на С#,
никак все не могу привинтить к обработчику события свой обработчик
как это сделать:

Есть:
IHTMLDocument2 doc2 = (IHTMLDocument2)axWebBrowser1.Document;
у doc2 есть onclick
так вот надо привинтить к этому свой онклик типа:

doc2.onclick = ...MyEvent()

private void MyEvent()
{
MessageBox.Show("Clicked!"); // delegate
}

уже измаялся, помогите плиз!
Re: Привинчивание событий
От: SanyaT Россия  
Дата: 18.06.04 13:28
Оценка:
RB>Покажи, плз, код, как используешь контрол.
RB>Я попробовал — после загрузки страницы свойство Document ничего не содержит...

вот код
юзаю mshtml, shdocvw

object o = null;
axWebBrowser1.Navigate("c:\\1.htm", ref o, ref o, ref o, ref o);
while (axWebBrowser1.ReadyState != tagREADYSTATE.READYSTATE_COMPLETE)
{
Application.DoEvents();
}
IHTMLDocument2 doc2 = (IHTMLDocument2)axWebBrowser1.Document;
doc2.designMode = "On"; // Включаем режим редактирования

doc2.onclick = ....
— имеет тип object, но это тк называемый диспинтерфес,

вот если на си то все в мсдне есть:

IHTMLDocument2* pHtmlDoc; // Указатель на документ
LPDISPATCH dispFO; // Указатель на IDispatch объекта-обработчика
...
VARIANT vIn;
V_VT(&vIn) = VT_DISPATCH;
V_DISPATCH(&vIn) = dispFO;

// Регистрируем обработчик события document.onkeydown
hr = pHtmlDoc->put_onkeydown( vIn );

но я пишу к сожалению не на си, а на C#
Re[2]: Привинчивание событий
От: rus blood Россия  
Дата: 18.06.04 13:36
Оценка:
RB>>Покажи, плз, код, как используешь контрол.
RB>>Я попробовал — после загрузки страницы свойство Document ничего не содержит...

Да, я уже нашел твой пост в соседнем форуме.
А вот в mshtml есть специальные делегаты

HTMLElementEvents2_onclickEventHandler
HTMLDocumentEvents2_onclickEventHandler

Я пробую их, но приаттачить (через attachEvent) не получается.
Кстати, как ты такую форму написал

...onclick += ...?

У меня ругается на "+="...
Имею скафандр — готов путешествовать!
Re[3]: Привинчивание событий
От: SanyaT Россия  
Дата: 18.06.04 13:48
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>>>Покажи, плз, код, как используешь контрол.

RB>>>Я попробовал — после загрузки страницы свойство Document ничего не содержит...

RB>Да, я уже нашел твой пост в соседнем форуме.

RB>А вот в mshtml есть специальные делегаты

RB>HTMLElementEvents2_onclickEventHandler

RB>HTMLDocumentEvents2_onclickEventHandler

RB>Я пробую их, но приаттачить (через attachEvent) не получается.

RB>Кстати, как ты такую форму написал

RB>...onclick += ...?


RB>У меня ругается на "+="...


это тоже ругается, это я просто "записался"
ща вот попробовал, твое предложение с простым делегированием, там вроде как компилится
а после твоего совета поповоду doc2.onclick = new MyEventDelegate(MyEvent);
к doc2 и обратиться не возможно, вываливается : Не поддерживается

пока таки неполучается не фигушки ...
Re[4]: Семен Семеныч!!!
От: rus blood Россия  
Дата: 20.06.04 11:38
Оценка: 16 (1)
...................
    mshtml.HTMLDocumentClass doc = (mshtml.HTMLDocumentClass)axWebBrowser1.Document;
    try
    {
        mshtml.HTMLDocumentEvents2_Event events = (mshtml.HTMLDocumentEvents2_Event)doc;
        events.onclick += new mshtml.HTMLDocumentEvents2_onclickEventHandler(events_onclick);
    }
    catch (Exception ex)
    {
    }
..................
private bool events_onclick(mshtml.IHTMLEventObj pEvtObj)
{
    MessageBox.Show("Click");
    return false;
}
Имею скафандр — готов путешествовать!
Re[5]: Семен Семеныч!!!
От: Romanych Украина  
Дата: 14.04.05 02:03
Оценка:
А почему оно вызвается несколько раз? Я понимаю, что есть пузырёк событий, но e.cancelBuble = true не срабатывает... Что делать?
Привлекательные женщины отвлекают
Re[6]: Семен Семеныч!!!
От: burger01  
Дата: 22.02.07 09:33
Оценка:
Здравствуйте, Romanych, Вы писали:

R>А почему оно вызвается несколько раз? Я понимаю, что есть пузырёк событий, но e.cancelBuble = true не срабатывает... Что делать?



после такого вот привинчивания, на моей странице текст мышкой select-ать нельзя, и чтобы двигаться вниз по scroll bar-у надо кликать в два раза больше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.