Я много раз искал, как отображать Msgbox, который не будет ждать ввода пользователя (нажатие ok или отмена). Я нашел 3 solutiuons к этому.Отображение MsgBox() с nowait (без ввода пользователем) не является реальной проблемой
1- Отображение MsgBox()
в другом потоке или с помощью BackgroundWorker()
2- Создать форму, которая отобразить сообщение, затем закрывают форму с помощью таймера и использовать его вместо MsgBox()
3- Использование API MessageBoxA()
Пусть у меня есть цикл от 1 до 100, и я хочу показать сообщение для I (счетчик)
Когда я проверяю выше 3 способа, я обнаружил, что это не правильный путь doi Я не нуждаюсь в msgbox(), чтобы закрыть его сам после показа сообщения, потому что это отобразит 100 диалоговых окон.
То, что я действительно хочу, это отобразить ТОЛЬКО 1 MsgBox() и соответствующим образом изменить текст.
мне удалось это сделать с помощью аа формы() в классе, и я сделал это с помощью Application.DoEvents
Я знаю, что это может быть сделано с помощью BackgroundWorker или Threading, так как много советов людей против использования Application.Doevents
Вот мой код
Dim oWW As New WaitWindow With {.TopLevel = True,.TopMost = True,.StartPosition = FormStartPosition.CenterScreen}
oWW.Show(Me)
For i = 1 to 100
Threading.Thread.Sleep(500) ' Just to slowdown execution
oWW.SetMessage("Counter = " + i.ToString)
Next
oWW.Dispose()
Public Class WaitWindow
Sub SetMessage(ByVal Message As string)
lbl_message.Text = Message
Application.DoEvents
End Sub
End Class
WaitWindow не более чем форма базового класса с меткой (lbl_message)
Этот код работает отлично (дисплей WaitWindowForm по центру отображаемой формы только один раз, а затем изменить текст)
У меня есть 3 вопроса:
1- Как отобразить WaitWindowForm в правом верхнем углу моего рабочая форма?
2- Можно ли отобразить нормальный MsgBox()
или MessageBox.Show()
только один раз, затем захватить отображаемый текст и изменить его?
3- Какой из них подходит для моего выпуска (BackgroundWorker или Threading) и то, что код в классе WaitWindow я пост будет, если я решил использовать Backgroundworker
или вкручивается вместо Application.DoEvents
(Изменение текста метки не показывая новую форму с новый текст)?
3 вопроса в одном посте .. Хамм .. кто заботится, я не тот, кто будет отвечать лол :)
Спасибо заранее.
Подвешено. Вместо этого я удалю вопрос. – LarsTech
Как я задаю не относительные вопросы, чтобы заслужить -2 downvote? Должен ли я быть серьезным (lol) дает downvote? все это связано. не имеют взаимопонимания, чтобы получить помощь от таких больных людей. –
Пусть администратор удалит его. Я закончил здесь –