Воссоздать графический элемент управления - PullRequest
0 голосов
/ 17 января 2019

Я использую элемент управления видеозахвата VideoCapX, и у меня возникла ошибка, и после нескольких часов отладки я определил, что единственный способ исправить ошибку - это перезапустить программу. сбросить управление.

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

Я знаю, что это дешевое решение, но на данный момент это мой единственный вариант.

1 Ответ

0 голосов
/ 17 января 2019

В общем, это будет работать:

Me.SomeControl1.Dispose()
Me.SomeControl1 = New SomeControl

'Configure SomeControl1 here.

Me.Controls.Add(Me.SomeControl1)

где SomeControl1 - поле, созданное автоматически при добавлении элемента управления в форму во время разработки. Первая строка удаляет существующий элемент управления из формы, вторая строка заменяет существующий элемент управления новым элементом того же типа, а последняя строка добавляет новый элемент управления в форму. Вам необходимо установить соответствующие свойства нового элемента управления между ними, так что вы можете сохранить старый, чтобы получить требуемые значения свойств, например,

Dim newControl As New SomeControl

'Configure newControl here, e.g.
newControl.Location = Me.SomeControl.Location

Me.SomeControl1.Dispose()
Me.SomeControl1 = newControl
Me.Controls.Add(Me.SomeControl1)

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

Тем не менее, тот факт, что вы используете довольно сложный пользовательский элемент управления, трудно сказать, могут ли быть и другие необходимые шаги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...