J'ai une application de mise en page de formulaire à onglets (VB.net) dont un formulaire particulier a une vue de données qui ouvre un enregistrement particulier dans un autre formulaire. Les formulaires sont ouverts comme suit;
Exécuter un sous-formulaire sur un autre formulaire multi-instance 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
Je veux; à la fermeture du formulaire Nouveau (NewSnagWindow) pour déclencher le sous-élément RefreshDGV() sur le formulaire d'origine (MaintRecords.Frm). J'ai essayé plusieurs façons d'appeler cela: Ex: Rechercher toutes les instances de MaintRecords (le formulaire du navigateur) et tenter de le déclencher, etc, et je ne peux tout simplement pas le faire fonctionner.
La dernière tentative du NewSnagForm était:
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
Je ne peux pas l'obtenir au feu, peu importe ce que je fais. Des idées quelqu'un? Merci.
Juste partager une idée. Ajouter un module et à l'intérieur du module déclarer une variable booléenne publique. Maintenant, sur l'événement "Dispose" de "NewForm", définissez la variable booléenne comme vraie. Et dans l'événement "GotFocus" du formulaire "MainRecords", vérifiez si le booléen est "True" puis renvoyez RefreshDGV et après que le booléen soit défini sur "False". Laissez-moi savoir si cela fonctionne. – meghlashomoy
Bonne idée, mais non, les formes de l'événement .GotFocus ne se déclenche pas. Je pense que c'est parce que les formes/tab comportement. Le formulaire est créé en tant qu'enfant de la page à onglet et défini sur Dock/Remplir. C'est en quelque sorte interrompre l'événement Got Focus. (parce que l'onglet a effectivement eu l'accent? Dnno). Cela me donne l'idée d'essayer de faire mettre au point les tabulations ... ou l'onglet a changé, mais je n'ai pas eu de chance avec ça jusqu'à présent. Merci. – Josh
Ensuite, essayez l'événement "Activer" ou un formulaire/contrôle doit déclencher l'événement GotFocus. Vous devez juste trouver lequel. Un lien utile -> http://www.access-programmers.co.uk/forums/showthread.php?t=141926 Le contenu principal est "Lorsque vous basculez entre deux formulaires ouverts, l'événement Deactivate se produit pour le premier formulaire, et l'événement Activate se produit pour le second formulaire Si les formulaires ne contiennent aucun contrôle visible et activé, l'événement LostFocus se produit pour le premier formulaire avant l'événement Deactivate et l'événement GotFocus se produit pour le deuxième formulaire après l'événement Activate. " – meghlashomoy