Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вызов функция проложения из WebBrowser как? 
:(
    Опции темы
gambit
Дата 22.10.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



Привет всем. Расскажите возможно ли такое? Есть html код, в нем есть ссылка, при нажатии на эту ссылку, не перейти по ней, а вызвать функцию из моего приложения?
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 22.10.2009, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



System.Windows.Forms.HtmlElement.AttachEventHandler


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
gambit
Дата 22.10.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



а можно пример?

Добавлено через 2 минуты и 25 секунд
Ты обсолютно правильно ответил, за последние 2 дня, на ти моих вопроса. Огромное спасибо, и это естествено +. Если конечно это чт то значит.
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 22.10.2009, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Цитата(gambit @  22.10.2009,  15:11 Найти цитируемый пост)
Если конечно это чт то значит.
Естественно значит. smile 
Пример в аттаче


Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  CallMyMethod.rar 48,78 Kb


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
gambit
Дата 23.10.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



diadiavova, еще раз огромное спасибо, и надеюсь последний вопрос: как в данный получившийся метод передать параметр? т.е. например передать в параметр название ссылки?
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 23.10.2009, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



А всё и так передаётся. Просто параметр sender надо привести к типу HTMLElement и извлечь из него всю нужную информацию


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
gambit
Дата 23.10.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 5
Всего: 40



Цитата(diadiavova @  23.10.2009,  12:03 Найти цитируемый пост)
Просто параметр sender надо привести к типу HTMLElement 

если не секрет как?

Кстати у меня sender=null
PM MAIL ICQ Skype   Вверх
diadiavova
Дата 23.10.2009, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Я тебя не по тому направил.  smile 
Просто надо создать обработчик события Click для элемента и всё будет нормуль.
Код

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            init();
        }

        void init()
        {
            this.webBrowser1.Navigate(System.IO.Directory.GetCurrentDirectory() + @"\HTMLPage1.htm");
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
        }

        void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            webBrowser1.Document.GetElementById("hello").Click+= MyMethod;
            
        
        }

        void MyMethod(object sender, EventArgs e)
        {
            var sr = ((HtmlElement)sender);
            MessageBox.Show(sr.TagName);
        }




--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Enter
Дата 14.1.2010, 04:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 13.2.2007

Репутация: 1
Всего: 2



возник такой-же вопрос, как обработать нажатие ссылки не переходя по ней
дело в том, что в приведенном примере страница всё же обновляется, и переход по ссылке происходит.
то есть если в коде страницы будет такая строчка
Код

<a href="http://ya.ru" id="hello">Показать сообщение</a>

то сообщение покажется один раз, после чего веббраузер уйдёт в сторону.

как сделать, чтобы браузер никуда не уходил, и по возможности вообще не обновлял страницу?
PM MAIL   Вверх
diadiavova
Дата 14.1.2010, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Цитата(Enter @  14.1.2010,  04:59 Найти цитируемый пост)
возник такой-же вопрос, как обработать нажатие ссылки не переходя по ней
Например можно изментиь ссылку. Как-нибудь так
Код

var link = webbrowser1.Document.GetElementById("hello");
link.SetAttribute("href", "#");//это чтобы не было перехода
//здесь можно назначить обработчик события onclick


Это сообщение отредактировал(а) diadiavova - 14.1.2010, 10:49


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Enter
Дата 14.1.2010, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 13.2.2007

Репутация: 1
Всего: 2



таким образом мы изменяем адрес перехода на "#", но обновление страницы всё же происходит
достаточно поставить несколько <br> перед ссылкой в коде страницы, и по нажатию на нее видно что страница обновляется и прокручивается вверх.

как переназначить событие link.Click, или как заставить webbrowser1 после получения главной страницы не проводить навигацию?
PM MAIL   Вверх
diadiavova
Дата 14.1.2010, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 31
Всего: 142



Цитата(Enter @  14.1.2010,  11:19 Найти цитируемый пост)
как переназначить событие link.Click

Ну это стандартным способом так же как назначается обработчик для любого события. Я ведь в примере показал(17-я строка).

Цитата(Enter @  14.1.2010,  11:19 Найти цитируемый пост)
как заставить webbrowser1 после получения главной страницы не проводить навигацию? 

После получения страницы назначь обработчик событию Navigating, а в нём отмени переход на другую страницу
Код

private void webbrowser1_Navigating(object sender, System.Windows.Forms.WebBrowserNavigatingEventArgs e)
{
    e.Cancel = true;
}


Это сообщение отредактировал(а) diadiavova - 14.1.2010, 11:31


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Enter
Дата 14.1.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 13.2.2007

Репутация: 1
Всего: 2



спасибо, это я и не мог найти
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.