У меня есть приложение с макетом формы (VB.net), в котором у конкретной формы есть datagridview, которая открывает конкретную запись в другой форме. Формы открываются следующим образом:
Запуск суб в другой форме с несколькими экземплярами VB.net
public sub OpenRecord() 'Reference. Part of a bigger routine (On Orgional form)
Dim NewSnagWindow As New Maint_SnagCard
NewSnagWindow.SentFrom = Me
MaintraxTabFunctions.TAB_OpenNewTabedForm(Main, NewSnagWindow)
End Sub
Public Sub RefreshDGV()
'Refresh the DGV here
End sub
Public Shared Function TAB_OpenNewTabedForm(sender As System.Object, NewForm As Windows.Forms.Form, Optional AsTab As Boolean = True) As Form
If AsTab Then
Dim NewTab As New TabPage
NewForm.TopLevel = False
NewForm.FormBorderStyle = FormBorderStyle.None
NewForm.Parent = NewTab
NewForm.Dock = DockStyle.Fill
NewForm.Visible = True
NewTab.Text = NewForm.Text
NewTab.Name = NewForm.Name
sender.TabPlane.TabPages.Add(NewTab)
sender.TabPlane.SelectedTab = NewTab
Else
NewForm.Show()
End If
Return NewForm
End Function
Я хочу; при закрытии новой формы (NewSnagWindow), чтобы запустить refreshDGV() в исходной форме (MaintRecords.Frm). Я попробовал несколько способов вызова этого примера: поиск всех экземпляров MaintRecords (форма браузера) и попытка его запуска и т. Д., И я просто не могу заставить его работать.
Последняя попытка на NewSnagForm был:
Public SentFrom As Object '### SentForm set as 'me' on origional sender form.
Private Sub SaveAndCloseButton_Click(sender As Object, e As EventArgs) Handles SaveAndCloseButton.Click
'Do some Saving Data tasks and magic
SentFrom.RefreshDGV()
End sub
Я просто не могу заставить его стрелять независимо от того, что я делаю. Какие-нибудь идеи? Спасибо.
Просто поделитесь идеей. Добавьте модуль и внутри модуля объявите общедоступную логическую переменную. Теперь в событии «Dispose» из «NewForm» задано значение boolean как true. А в событии «GotFocus» формы «MainRecords» проверьте, является ли логическое значение «True», затем пожар RefreshDGV и после этого установите логическое значение «False». Дайте мне знать, если это сработает. – meghlashomoy
Хорошая идея, но нет, формы. Событие GotFocus не срабатывает. Я думаю, это потому, что поведение форм/вкладок. Форма сделана дочерним на странице вкладки и настроена на док-станцию / заполнение. Как-то это прерывает событие Got Focus. (потому что Tab фактически получил фокус? dunno). Это дает мне представление о том, чтобы попытаться получить вкладки с фокусом .... или вкладка изменила вас, но iv не повезло с этим до сих пор. Благодарю. – Josh
Затем попробуйте событие «Активировать» или форма/элемент управления должен запустить событие GotFocus. Вам просто нужно найти, какой из них. Полезная ссылка -> http://www.access-programmers.co.uk/forums/showthread.php?t=141926 Основной контент: «Когда вы переключаетесь между двумя открытыми формами, событие Деактивация происходит для первой формы и событие Activate возникает для второй формы. Если формы не содержат видимых, активированных элементов управления, событие LostFocus возникает для первой формы перед деактивирующим событием, а событие GotFocus происходит для второй формы после события Activate. " – meghlashomoy