В общем, это будет работать:
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.
Тем не менее, тот факт, что вы используете довольно сложный пользовательский элемент управления, трудно сказать, могут ли быть какие-то другие необходимые шаги.
По данным JavaDoc:
Это остается допустимым, пока блокировка не выпущена путем вызова метода выпуска путем закрытия канала, который использовался для получения его, или завершением виртуальной машины Java, какой бы ни на первом месте.
И вот содержание FileInputStream.close()
public void close() throws IOException {
if (channel != null)
channel.close();
close0();
}
Это похоже close
на потоковых завершениях канал, который выпускает блокировку.
Да.
Блокировки зависят от дескриптора файла. Когда нет никакого дескриптора файла, представляющего файл в процессе, не было бы блокировки, связанной с ним.