Я новичок в VB и .Net, и у меня есть задача, которую я не могу продолжить.доступ к динамически созданным элементам формы из потока в vb.net
- Начальная тема, когда screen1 Loads. Затем пользователь переходит к экрану2.
- На экране2 поток по-прежнему работает позади. когда пользователь выполняет действие (например, щелчок) на экране2, он вызывает поток для доступа к элементам на экране2
- Элементы на экране 2 динамически создаются и не предназначены для IDE.
Таким образом, по существу поток, созданный в одной форме, должен иметь доступ к динамически созданным элементам формы в другой форме.
Если мой вопрос слишком прост, пожалуйста, простите меня. Если это не ясно, сообщите мне, и я буду перефразировать его.
Примечание: Элемент, о котором я говорю, представляет собой в основном коробку с картинками внутри панели макета потока.
Заранее благодарен Вся помощь с нетерпением (грызущие гвозди сейчас) ждут и очень ценятся.
EDIT
Допустим, поток называется ctThread был запущен в приборную панель экрана
ctThread.start()
Этот поток работает бесконечно, ожидая события триггера.
Между тем пользователь перешел на экран под названием QuizScreen и на этом экране (форма) Мне нужно обновить некоторые динамически созданные элементы, имена которых я знаю.
Итак, когда время подходит для ctThread, который ждет (Threadener Thread), он будет вызывать sub ниже.
Sub
public sub changeComputerStatus(ByVal node)
Dim flowpanel As FlowLayoutPanel = CType(QuizScreen.FlowLayoutPanel1.Controls("flow_" + node), FlowLayoutPanel)
Dim pictControl As PictureBox = CType(flowpanel.Controls("pict_" + node), PictureBox)
pictControl.Image = System.Drawing.Image.FromFile(Application.StartupPath & "\images\application-on.png")
end sub
здесь узел постоянно меняется. Вот как я различаю каждый элемент управления, который я создаю.
Примечание: этот поток был запущен на экране под названием приборной панели, и пользователь теперь находится на другом экране QuizScreen.
Первая строка суб, которую я дал выше, запускает и ничего не возвращает в поток. Следовательно, когда он переходит к следующей строке, он не может использовать ничего в качестве ссылки. И, следовательно, вышеупомянутая ошибка.
С какой частью этой задачи возникают проблемы? Вы пробовали это, и он работает неправильно? Или вы получаете сообщение об ошибке? Или вы просто просите общих советов о том, как вообще делать что-то подобное? –
Привет, Стивен, спасибо за ответ. Я получаю сообщение об ошибке при попытке доступа к динамически создаваемому элементу. Ошибка: «Ссылка на объект не установлена в экземпляр объекта». Если я попытаюсь получить доступ к одному и тому же элементу (динамическому элементу), используя событие в форме, я могу это сделать. Но при попытке одного и того же кода внутри потока. он почему-то не находит элемент. –
Я - веб-разработчик (php/python), в основном пойманный в проекте vb.net. Разработка приложений для меня совершенно новая. –