Ich habe eine Registerkarte Formular-Layout-Anwendung (VB.net), die ein bestimmtes Formular eine Datagridview, die einen bestimmten Datensatz in einem anderen Formular öffnet. Die Formulare werden wie folgt geöffnet;
Führen Sie ein Sub auf einem anderen Multi-Instanz-Formular 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
Ich möchte; Schließen des neuen Formulars (NewSnagWindow) zum Auslösen des RefreshDGV() Sub auf dem ursprünglichen Formular (MaintRecords.Frm). Ich habe mehrere Wege ausprobiert, dies zu nennen. ZB: Ich suche nach allen Instanzen von MaintRecords (dem Browser-Formular) und versuche, es auszulösen usw., und ich kann es einfach nicht zum Laufen bringen.
Der neueste Versuch auf der NewSnagForm war:
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
Ich kann es einfach nicht, egal zu feuern, was ich tun. Irgendwelche Ideen irgendjemand? Danke.
Teilen Sie einfach eine Idee. Fügen Sie ein Modul hinzu und deklarieren Sie innerhalb des Moduls eine öffentliche boolesche Variable. Jetzt auf "Dispose" -Ereignis von "NewForm" setzen Sie die boolesche Variable als wahr. Und im "GotFocus" -Ereignis des "MainRecords" -Formulars überprüfe, ob der boolesche Wert "True" ist, dann feuere RefreshDGV und setze danach den booleschen Wert auf "False". Lass mich wissen ob es funktioniert. – meghlashomoy
Gute Idee, aber nein, das Formular .GotFocus Event wird nicht ausgelöst. Ich denke es ist, weil das Formular/Tab-Verhalten. Das Formular wird als untergeordnetes Element der Registerkarte festgelegt und zum Andocken/Füllen festgelegt. Irgendwie unterbricht das das Got Focus Event. (weil der Tab eigentlich den Fokus hat?). Es gibt mir die Idee zu versuchen, die Tabpages bekommen Fokus .... oder Tab geändert, aber iv hatte damit bisher kein Glück. Vielen Dank. – Josh
Dann versuchen Sie "Activate" -Ereignis oder ein Formular/Steuerelement muss das GotFocus-Ereignis auslösen. Sie müssen nur welche finden. Ein nützlicher Link -> http://www.access-programmers.co.uk/forums/showthread.php?t=141926 Hauptinhalt ist "Wenn Sie zwischen zwei geöffneten Formularen wechseln, tritt das Deactivate-Ereignis für das erste Formular auf und Das Activate-Ereignis tritt für das zweite Formular auf. Wenn die Formulare keine sichtbaren aktivierten Steuerelemente enthalten, tritt das LostFocus-Ereignis für das erste Formular vor dem Deactivate-Ereignis und das GotFocus-Ereignis für das zweite Formular nach dem Activate-Ereignis auf. – meghlashomoy