Я всегда получаю исключение, когда пытаюсь переключаться между разными формами в своей программе. Может быть, вы поможете мне решить эту проблему. Вот сообщение об исключении:
Control.Invoke должен использоваться для взаимодействия с элементами управления, созданными в отдельном потоке
Я прикрепил формы к очень хорошим переменным, и эта проблема возникает, когда я пытаюсь использовать такую команду, как MyForm.Show().
Это не происходит, когда формы не привязаны к переменным, но тогда у меня возникают колосальные проблемы с обновлением текстовых полей и прочее.
Надеюсь услышать вас в ближайшее время!
редактировать;
У меня 4 разные формы. Когда я загружаю основной модуль и основную форму, в Sub(...) Handles MyBase.Load я выполняю следующий код:
В модуле:
Public StartupForm As frmStartup
Public RegularForm As frmRegularUse
Public LoginForm As frmLogin
Public PasswordForm As frmPassword
Public SettingsForm As frmSettings
В основной форме:
RegularForm = Me
StartupForm = frmStartup
LoginForm = frmLogin
PasswordForm = frmPassword
SettingsForm = frmSettings
Это подход, который я разработал, чтобы получить полный контроль над обновлением форм. Это программа для сканера Motorola с Windows CE. Теперь, например, когда я ввожу правильный пароль в LoginForm, я хочу переключиться на RegularForm. Когда я пытаюсь использовать RegularForm.Show(), RegularForm.ShowDialog или RegularForm.BringToFront(), я получаю исключение. Когда я пытаюсь вызвать форму с помощью функции frmRegularUse.Show(), я могу вызвать форму, но я полагаю, что она создается в другом потоке, поэтому я теряю контроль над ней (когда я пытаюсь ввести что-то с клавиатуры, ответа нет).