Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Виполнение следущего действия по окончанию Первого


Автор: Natapro 4.11.2009, 17:54
у меня к примеру при нажатии кнопки выполняется ряд действий к примеру Переход по силке, нажатие на кнопку, переход по ссилке
 
Код

1)     WebBrowser1.Navigate("http://google.ru")
2)     WebBrowser1.Navigate("javascript: show_quick_reply()")
3)     WebBrowser1.Navigate("javascript: postIt()")
4)     WebBrowser1.Navigate("http://mail.ru")
5)     WebBrowser1.Navigate("javascript: show_quick_reply()")
6)     WebBrowser1.Navigate("javascript: postIt()")

как сделать что б следущее действие тоисть 2 выполнялось только по окончанию,  к примеру загрузки сайта  в даном случи, действия 1 ?

Автор: diadiavova 4.11.2009, 18:10
Об окончании того или иного действия ты можешь узнать по событиям. В частности при завершении загрузки документа происходит событие DocumentCompleted.

Автор: Natapro 4.11.2009, 18:19
а как это сделать ? когда это всё виполняется при нажатии кнопки, как туда ещё это собитие впихнут ? (ой как я их не люблю эти собития)

Автор: diadiavova 4.11.2009, 18:47
Можно, конечно сделать и универсальный код, но тебе его пока будет сложно понять, поэтому предлагаю такую модель(не гибкую, но работать должна):
Создаёшь метод, в котором проверяешь адрес текущей странички и в зависимости от результата проверки выполняешь то или иное действие. И вызываешь этот метод из обработчика события DocumentCompleted.

Автор: Natapro 4.11.2009, 19:36
 smile 

Автор: diadiavova 4.11.2009, 19:46
Natapro, ты меня фгроп хочешь загнать? smile
Какой пример? Ну вот что-то в этом роде
Код

Sub ExecuteTasks()
    Select Case WebBrouser1.Uri.OriginalString
        Case "http://www.site1.ru/index.html"
            WebBrowser1.Document.Forms(0).DomElement.button1.click()
            WebBrowser1.Navigate("http://www.site2.ru/index.html")
        Case "http://www.site2.ru/index.html"
            WebBrowser1.Document.GetElementById("tralala").DomElement.click()
            WebBrowser1.Navigate("http://www.site3.ru/index.html")
        Case "http://www.site3.ru/index.html"

            MsgBox("Конец, Света!")
    End Select
End Sub

И вызови это из обработчика.

Автор: Natapro 4.11.2009, 20:03
 smile 

Автор: Natapro 5.11.2009, 22:42
ницего не получилосЬ :( что как где, никак не поняла...
:(((((( 

Автор: diadiavova 5.11.2009, 22:43
Я так и знал smile

Автор: Natapro 5.11.2009, 23:02
ну вот видишь хИх ))
Вот смотри єто 4 кнопки, мне надо обеденить все их действия в одну...
а не получается, не роботает, на вписке текста вибивает ошибку...
Код

  Private Sub Открыть РозделToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Открыть РозделToolStripMenuItem.Click
        WebBrowser1.Navigate("http://site.ru")
    End Sub

    Private Sub НажатьНаКнопкуToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles НажатьНаКнопкуToolStripMenuItem.Click

        WebBrowser1.Navigate("javascript: show_quick_reply()")
    End Sub

    Private Sub ВписатьТекстToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ВписатьТекстToolStripMenuItem.Click
        Me.WebBrowser1.Document.DomDocument.selection.createRange().text = "Проверка"
    End Sub

    Private Sub СохранитьToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles СохранитьToolStripMenuItem.Click
        WebBrowser1.Document.GetElementById("postIt")
    End Sub

Автор: diadiavova 5.11.2009, 23:10
Не выдумывай

Добавлено через 2 минуты и 19 секунд
Кстати, чтобы заменить выделенный фрагмент его кагбэ сначала выделить надо

Автор: Natapro 5.11.2009, 23:30
всмысле не выдумывай ? и какой й ещё выделеный фрагмент ?

Добавлено через 55 секунд
и зачем ты мну пример этот скинул ?

Автор: diadiavova 5.11.2009, 23:32
Выделяешь на странице какой-нибудь текст и запускаешь код. Выделенный текст заменяется на то, что тебе надо.

Автор: Natapro 5.11.2009, 23:32
я знаю как вставлять текст,  ты мне уже обяснил  smile

Добавлено через 26 секунд
а зачем мне ? мне надо обеденить действие 4 кнопок в 1

Добавлено через 2 минуты и 15 секунд
там не получается изза того что неуспивает выполнится переход, как начинается вписка текста :(

Автор: diadiavova 5.11.2009, 23:43
Я же тебе показал как надо сделать. В методе проверяй какая страница загружена в браузере и в зависимости от результата проверки выполняй то или иное действие. Сам метод вызывай из обработчика события DocumentCompleted

Автор: Natapro 5.11.2009, 23:50
а как где ?... кинь мне пожалуйста литературу, где я могу про методы и обработчики событий почитать, а то  я вобще ничего не понимаю :(

Автор: diadiavova 6.11.2009, 00:13
Если браузер добавляла в дизайнере, то просто в коде вверху есть два выпадающих списка. Открываешь левый список там выбираешь свой браузер, открываешь правый список, там выбираешь нужное тебе событие и обработчик этого события вставляется в код. После этого вписывай туда то, что тебе надо. 
Из литературы лучше всего мсдн
http://msdn.microsoft.com/ru-ru/library/2x7h1hfk.aspx

Автор: Natapro 6.11.2009, 12:37
Ясно, похожий вопросик, а как сделать чтоб к примеру у меня ряд действий подвязан к одной кнопке, как сделать чтоб к примеру виполнилось одно , через 3 секунды второе, через 1 минуту третье ?

Автор: diadiavova 6.11.2009, 12:39
http://msdn.microsoft.com/ru-ru/library/system.threading.thread.sleep.aspx

Автор: Natapro 6.11.2009, 12:46
чот не разобралась я :(

Добавлено через 13 секунд
и не думай щяс написать, я так и думал!

Автор: diadiavova 6.11.2009, 12:57
Цитата(Natapro @  6.11.2009,  12:46 Найти цитируемый пост)
и не думай щяс написать, я так и думал! 

Вообще-то я думал разберёшься smile
Код

Imports System.Threading
 

Код

Thread.Sleep(10000)

Этот код остановит выполнение на 10 секунд

Автор: Natapro 6.11.2009, 13:24
:(( там про это ненаписано :(((
это в милисикундах ?

Автор: Natapro 6.11.2009, 14:00
оно останавливается вобще форму... любие в ней действия, а нужно просто что б создавало как бы промижуток между действиями... 

Автор: diadiavova 6.11.2009, 18:50
Цитата(Natapro @  6.11.2009,  14:00 Найти цитируемый пост)
оно останавливается вобще форму... любие в ней действия, а нужно просто что б создавало как бы промижуток между действиями...  

Оно останавливает поток. Если надо, чтобы форма в это время работала - метод надо выполнять в другом потоке. О многопоточном программировании читай в мсдн, в рамках форума этого не объяснишь.
Цитата(Natapro @  6.11.2009,  13:24 Найти цитируемый пост)
там про это ненаписано

Там ссылки на топики. Метод перегружен и каждая перегрузка описана отдельно. На той странице, что я дал ссылки на оба топика.

Автор: Pilger 7.11.2009, 03:22
Не стоит лезть сразу в горы и браться сразу за миллион разных сложных вещей. Ни в чем не разберешься. Надо начинать с простого и легкого... и со временем переходить на более сложное.

Автор: Natapro 15.11.2009, 13:08
ну попробовать ведь можно всегда smile)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)