Member 13569650 Ответов: 1

Vb.net событие кнопки, которое может управлять бесконечным циклом метода формы для выхода из него


Привет
У меня есть форма с одной кнопкой
и одно текстовое поле

В событие нажатия кнопки я поставил логическое
флаг, который также существует в другом методе формы, управляющем циклом (выход из цикла)

Мой вопрос в том, что этот контроль в порядке
Если не то, что мне нужно сделать.

Спасибо.

Что я уже пробовал:

Я не имею ни малейшего представления как и если это так
Контроль в порядке

Richard MacCutchan

Что происходит, когда вы запускаете его?

Member 13569650

Иногда делаем выход из петли
Иногда стек и мне нужен
Используйте щелчок X для прерывания.

Спасибо.

0x01AA

Похоже, что ваш цикл действительно мешает обслуживать насос сообщений. Попробуйте вызвать приложение.DoEvents в петле. Может быть, не каждый цикл, но, может быть, каждый 10-й или 100-й

Member 13569650

Прежде чем я сделаю этот звонок, который, как я подозреваю, замедлит мою работу.
Метод задачи.

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

Member 13569650

Я не знаю как это выложить я то что вы пробовали
поэтому я размещаю его здесь

========================
'
Система Импорта
Система Импорта.Окна.Формы

EhRegExTester модуль

Суб Основной()

Dim myForm как новая форма 1
ссылки.Метод showdialog()

Конец Подводной Лодки

Конечный Модуль


Общественного Класса Form1

Dim message1 As String = Nothing
Dim флаг как Boolean = False

Частная суб обработчика button1_click(отправителя как объект, а равно EventArgs) обрабатывает кнопки button1.Щелчок
флаг = True
Конец Подводной Лодки

Публичная Подзадача Длины
Пока Это Правда
Если флаг то выходите пока
Конец Пока
с помощью MsgBox("текстовое поле textbox1.Текст = " &амп; текстовое поле textbox1.Текст)
Конец Подводной Лодки

End Класса


&ЛТ;глобальные.Майкрософт.на языке VisualBasic.compilerservices.designergenerated()&ГТ; _
Частичного Класса Form1
Наследует Систему.Окна.Форм.Форма

-Форма переопределяет dispose для очистки списка компонентов.
<system.diagnostics.debuggernonusercode()> _
Защищенные переопределения суб распоряжаться(бывал утилизации как логическое)
Попробуй
При утилизации, атакже компоненты ничего не значит
компоненты.Располагать()
Конец, Если
Окончательно
Моя база.Утилизация(утилизация)
Конец Попытки
Конец Подводной Лодки

- Требуется дизайнером форм Windows
Частные компоненты как система.ComponentModel.# То #

'Примечание: следующая процедура требуется конструктором форм Windows
- Его можно изменить с помощью конструктора форм Windows.
- Не изменяйте его с помощью редактора кода.
<system.diagnostics.debuggerstepthrough()> _
Частная Суб Метода Initializecomponent()
Me.TextBox1 = Новая Система.Окна.Формы.текстовый()
Me.Button1 = Новая Система.Окна.Формы.Кнопка()
Меня.SuspendLayout()
'
'Текстовое поле textbox1
'
Меня.Текстовое поле textbox1.Расположение = Новая Система.Рисование.Точка(102, 222)
Меня.Текстовое поле textbox1.Наименование = "Элемент Textbox1"
Меня.Текстовое поле textbox1.Размер = Новый Система.Рисование.Размер(459, 22)
Я.Текстовое Поле 1.TabIndex = 0
'
'Кнопка button1
'
Я.Кнопка 1.Местоположение = Новая Система.Рисование.Точка(232, 104)
Я.Кнопка 1.Имя = "Button1"
Я.Кнопка 1.Размер = Новая Система.Рисование.Размер(234, 23)
Я.Кнопка 1.TabIndex = 1
Я.Кнопка 1.Text = "Button1"
Я.Кнопка 1.UseVisualStyleBackColor = True
'
-Форма 1
'
Me.AutoScaleDimensions = Новая Система.Рисование.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = Система.Окна.Формы.AutoScaleMode.Font
Me.ClientSize = Новая Система.Рисование.Размер(688, 458)
Я-Контроль.Добавить(Me.Button1)
Я-Контроль.Добавить(Me.TextBox1)
Me.Name = "Форма 1"
Me.Text = "Form1"
Me.ResumeLayout(False)
Меня.PerformLayout()

Конец Подводной Лодки
Друг WithEvents TextBox1 Как Система.Окна.Формы.текстовый
Друг С Событиями Button1 Как Система.Окна.Формы.Кнопка

End Класса

=======================

Member 13569650

Сори об этом коде неисправности
Не реагируйте на это.

Member 13569650

- Сори, это опять правильный код.
"если я нажму кнопку Показать сообщение, то никакие сообщения не будут отображаться, потому что флаг ложен
- Когда я нажимаю кнопку falg false, чтобы переключить ее на флаг True.
- приложение не реагирует.
'
"как я могу сделать это простое приложение, чтобы реагировать, когда листать bettween
- правда и ложь
- Я очень благодарен Вам за любую помощь

'
'
Система Импорта
Система Импорта.Окна.Формы

Модуль М1

Суб Основной()

Dim myForm как новая форма 1
ссылки.Метод showdialog()

Конец Подводной Лодки

Конечный Модуль


Общественного Класса Form1

Dim message1 As String = Nothing
Dim флаг как Boolean = False

Частная суб обработчика button1_click(отправителя как объект, а равно EventArgs) обрабатывает кнопки button1.Щелчок
'flag = True
LengthyTask()
Конец Подводной Лодки

Частная суб методе button2_click(отправителя как объект, а равно EventArgs) обрабатывает элемент button2.Нажмите
флаг = не флаг
Я.Кнопка 2.Text = "Flag =" & flag.Метод toString
Конец Подводной Лодки

Публичная Подзадача Длины()
Пока Это Правда
Если флаг то
Выходите Пока
Конец, Если
Конец Пока
с помощью MsgBox("текстовое поле textbox1.Текст = " &амп; текстовое поле textbox1.Текст)
Конец Подводной Лодки

End Класса


&ЛТ;глобальные.Майкрософт.на языке VisualBasic.compilerservices.designergenerated()&ГТ; _
Частичного Класса Form1
Наследует Систему.Окна.Форм.Форма

-Форма переопределяет dispose для очистки списка компонентов.
<system.diagnostics.debuggernonusercode()> _
Защищенные переопределения суб распоряжаться(бывал утилизации как логическое)
Попробуй
При утилизации, атакже компоненты ничего не значит
компоненты.Располагать()
Конец, Если
Окончательно
Моя база.Утилизация(утилизация)
Конец Попытки
Конец Подводной Лодки

- Требуется дизайнером форм Windows
Частные компоненты как система.ComponentModel.# То #

'Примечание: следующая процедура требуется конструктором форм Windows
- Его можно изменить с помощью конструктора форм Windows.
- Не изменяйте его с помощью редактора кода.
<system.diagnostics.debuggerstepthrough()> _
Частная Суб Метода Initializecomponent()
Me.TextBox1 = Новая Система.Окна.Формы.текстовый()
Me.Button1 = Новая Система.Окна.Формы.Кнопка()
Me.Button2 = Новая Система.Окна.Формы.Кнопка()
Меня.SuspendLayout()
'
'Текстовое поле textbox1
'
Меня.Текстовое поле textbox1.Расположение = Новая Система.Рисование.Точка(102, 222)
Меня.Текстовое поле textbox1.Наименование = "Элемент Textbox1"
Меня.Текстовое поле textbox1.Размер = Новый Система.Рисование.Размер(459, 22)
Я.Текстовое Поле 1.TabIndex = 0
'
'Кнопка button1
'
Я.Кнопка 1.Местоположение = Новая Система.Рисование.Точка(102, 124)
Я.Кнопка 1.Имя = "Button1"
Я.Кнопка 1.Размер = Новая Система.Рисование.Размер(234, 23)
Я.Кнопка 1.TabIndex = 1
Я.Кнопка 1.Text = "Показать Сообщение"
Я.Кнопка 1.UseVisualStyleBackColor = True
'
-Кнопка 2
'
Я.Кнопка 2.Местоположение = Новая Система.Рисование.Точка(362, 124)
Я.Кнопка 2.Наименование = "Элемент Button2"
Я.Кнопка 2.Размер = Новая Система.Рисование.Размер(199, 23)
Я.Кнопка 2.TabIndex = 2
Я.Кнопка 2.Text = "Flag = False"
Меня.Элемент button2.UseVisualStyleBackColor = Истина
'
-Форма 1
'
Me.AutoScaleDimensions = Новая Система.Рисование.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = Система.Окна.Формы.AutoScaleMode.Font
Me.ClientSize = Новая Система.Рисование.Размер(688, 458)
Я-Контроль.Добавить(Me.Button2)
Я-Контроль.Добавить(Me.Button1)
Я-Контроль.Добавить(Me.TextBox1)
Me.Name = "Форма 1"
Me.Text = "Form1"
Me.ResumeLayout(False)
Меня.PerformLayout()

Конец Подводной Лодки
Друг WithEvents TextBox1 Как Система.Окна.Формы.текстовый
Друг С Событиями Button1 Как Система.Окна.Формы.Кнопка
Друг С Событиями Button2 Как Система.Окна.Формы.Кнопка

End Класса

1 Ответов

Рейтинг:
2

RickZeeland

Может быть, вам нужно Приложение.Функция doevents() в вашей петле, видите: Приложение.Метод DoEvents - VB.NET язык в двух словах, второе издание [Книга][^]
В узком цикле приложение Windows form может перестать отвечать на запросы.

Если это не поможет, пожалуйста, разместите свой код в разделе "Что я пробовал".