Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: DoEvents и пользовательский ввод Добавлено: 10.01.10 15:19  

Автор вопроса:  Winand | Web-сайт: winandfx.narod.ru
Нужно чтобы венда не считала программу зависшей, но при этом я не хочу, чтобы обрабатывались пользовательские действия.
Ситуация: в заголовке окна пишу "Буфферинг: хх%", и там меняется число. Но пользователь не может нажимать какие-либо кнопки, пока буферизация не завершится. Так как процесс может быть длительным, нужно использовать DoEvents, но как сделать, чтобы пользовательский ввод не воспринимался?

Ответить

  Ответы Всего ответов: 28  

Номер ответа: 1
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 10.01.10 15:20
Ах да. Если я блокирую форму с помощью Enabled, то это защищает только от кликов мышью

Ответить

Номер ответа: 2
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #2 Добавлено: 10.01.10 18:22
Странный вопрос задаешь.
Нужно не выключая формы и контролов сделать их не восприимчивыми ко всему?
Тада мудифицирую обработчики событий или ещё круче мути сабклассинг.

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 10.01.10 18:53
Я уже купаюсь в сабклассингах. У меня даже текстбокс сабклассится, потому что нужен юникод.
Почему же не выключая? я выключаю - form1.enabled=false, но listview на enter все равно реагирует (ну или кнопка), так как листвью сабклассится, то я ему ставлю флаг, чтобы не обрабатывал клавиатуру. Так что вроде с костыльми, но справился.

Ответить

Номер ответа: 4
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #4 Добавлено: 11.01.10 00:37
Хренасе хрень

Ответить

Номер ответа: 5
Автор ответа:
 PROgrammIST



ICQ: 403099048 

Вопросов: 22
Ответов: 94
 Web-сайт: forum.quotedev.org.ru
 Профиль | | #5
Добавлено: 11.01.10 07:25
Незнаю почемуц, но у меня функция DoEvents всё-равно не пашет. Форма зависает и всё...

Ответить

Номер ответа: 6
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #6
Добавлено: 11.01.10 09:58
Покажи кусок, в который ты ее вставил.

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 11.01.10 10:25
Покажи кусок, в который ты ее вставил.

[telepat mode]Наверняка грузит какую нибудь страницу из инета в основном потоке, а после этого вызывает DoEvents :)[/telepat mode]

Ответить

Номер ответа: 8
Автор ответа:
 PROgrammIST



ICQ: 403099048 

Вопросов: 22
Ответов: 94
 Web-сайт: forum.quotedev.org.ru
 Профиль | | #8
Добавлено: 11.01.10 12:36
  1. For i = 0 To File1.ListCount - 1
  2.  
  3.     label1.caption = "test"
  4.     For wm = 1 To List1.ListCount
  5.  
  6.         If tfcrc = List1.List(wm - 1) Then
  7.             If tfmd5 = List2.List(wm - 1) Then
  8.  
  9.                 TestFunc
  10.  
  11.             End If
  12.         End If
  13.         
  14.     Next wm
  15.                 
  16.  
  17. Next


Ну вот. Куда я не вставлял - нихрена...

EROS, да нет:) Неугадал)))

Ответить

Номер ответа: 9
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #9
Добавлено: 11.01.10 13:09
Смотрим. Можно поставить DoEvents во внутренний цикл, но не в условие.

  1. For i = 0 To File1.ListCount - 1
  2.  
  3.     label1.caption = "test"
  4.     For wm = 1 To List1.ListCount
  5.  
  6.         If tfcrc = List1.List(wm - 1) Then
  7.             If tfmd5 = List2.List(wm - 1) Then
  8.  
  9.                 TestFunc
  10.  
  11.             End If
  12.         End If
  13.          DoEvents
  14.     Next wm
  15.                  
  16.  
  17. Next

Если это не помогает, очевидно, что большую часть времени занимает не эти два вложенных цикла, а функция TestFunc. Значит, DoEvents желательно вставить еще и в нее.

Ответить

Номер ответа: 10
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #10
Добавлено: 11.01.10 18:44
У меня кажется появилась новая гениальная идея. Чтобы не воспринимать ввод, нужно показать модальное окно) попробую

Ответить

Номер ответа: 11
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #11 Добавлено: 11.01.10 19:24
VBD не "ещё и в неё", а только в неё.

Winаnd, а потом ты из потока закрывать окно будешь?

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 11.01.10 19:50
чорд. Оно же перекрывает выполнение кода. не подумал)

Ответить

Номер ответа: 13
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #13
Добавлено: 11.01.10 20:37
В переменные формы
  1.  
  2. Dim Ololo As Boolean


В Form_Unload
  1.  
  2. Ololo = True
  3. Cancel = 1


В цикл, где DoEvents
  1.  
  2. DoEvents
  3. If Ololo Then End



?

Ответить

Номер ответа: 14
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #14
Добавлено: 11.01.10 20:37
Ну примерно в смысле. Там доработаешь васю если чо))

Ответить

Номер ответа: 15
Автор ответа:
 PROgrammIST



ICQ: 403099048 

Вопросов: 22
Ответов: 94
 Web-сайт: forum.quotedev.org.ru
 Профиль | | #15
Добавлено: 11.01.10 22:10
VѓАDUnit, „„„Ђ„w „~„y„‡„‚„u„~„p. „@ „†„…„~„{„€„y„‘ „r„ѓ„u„s„Ђ „|„y„Љ„Ћ „Ѓ„‚„Ђ„r„u„‚„‘„u„„ „„„u„{„ѓ„„-„q„Ђ„{„ѓ„Ќ „~„p „x„~„p„‰„u„~„y„‘. „P„Ђ„Џ„„„Ђ„}„… „„„p„} „~„y„{„p„{„Ђ„s„Ђ „€„y„{„|„p „t„p„w „~„u„„. „B„Ѓ„‚„y„~„€„y„Ѓ„u, „Џ„„„… „†„…„~„{„€„y„ђ „}„Ђ„w„~„Ђ „q„Ќ„|„Ђ „y „~„p„Ѓ„‚„‘„}„…„ђ „r„ѓ„„„p„r„y„„„Ћ, „~„Ђ „Ѓ„‚„Ђ„ѓ„„ „{„Ђ„t„p „}„~„Ђ„s„Ђ „y „‚„u„Љ„y„| „Ђ„„„t„u„|„y„„„Ћ. „@ „†„…„~„{„€„y„‘ „Џ„„„p „r„Ќ„s„|„‘„t„y„„ „r„Ђ„„ „„„p„{:
  1. If Text1.Text = "done" And Text2.Text = "done" Then
  2. Msgbox "Code success!"
  3. ElseIf Text1.Text = "done" And Text2.Text = "error" Then
  4. Msgbox "Code in work!"
  5. ElseIf Text1.Text = "error" And Text2.Text = "error" Then
  6. Msgbox "Error in code!"
  7. End If

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам