В размещенном вопросе: «Проверить, открывается ли форма», ответ ниже был опубликован как правильный. Однако я хотел бы знать, как проверить, открыт ли какой-либо конкретный экземпляр формы перед его открытием; например, чтобы проверить, открывается ли экран редактирования одной и той же записи или форма для добавления новой записи, когда другая форма, чтобы сделать то же самое, уже открыта.Проверьте, открыт ли конкретный экземпляр формы в vb.net 2010
Ниже приведенный код является правильным ответом на исходный вопрос. Можно ли изменить его, чтобы делать то, что мне нужно? Заранее спасибо.
If Application.OpenForms().OfType(Of Form2).Any Then
MessageBox.Show ("Opened")
Else
Dim f2 As New Form2
f2.Text = "form2"
f2.Show()
End If
Определенный экземпляр будет формой, которая редактирует конкретную запись из таблицы. Я бы также отслеживал статус редактирования (независимо от того, была ли форма в режиме редактирования или нет). Или, если эта форма имеет дочерний элемент (форма, редактирующая подэлемент этой записи); родительская форма не может выйти, пока ребенок не будет закрыт.
В настоящее время я создаю дерево открытых форм, их имя, запись, которую они редактируют, и статус редактирования, а их закрытие обновляется в дереве. Ответ # 2 на первый взгляд кажется, что он может справиться с этими ситуациями, и нет необходимости иметь эту структуру данных в фоновом режиме, которая должна постоянно обновляться всякий раз, когда предпринимается действие. Возможно, можно сделать его более общим, чтобы его можно было легко использовать повторно из приложения в приложение.
Что вы подразумеваете под конкретным случаем? Как вы будете различать один экземпляр? –
Прежде чем вы решите сделать это таким образом, обязательно прочитайте [этот вопрос] (http://stackoverflow.com/questions/3751554/application-openforms-count-0-). Просто сохраните экземпляр формы в списке, чтобы вам не понадобилась помощь в поиске ее позже. –
Спасибо, что сообщили об этом – smh