Plusieurs cas en fonction de votre besoin:
1) Si votre méthode BrowseBprDir() n'accède à aucun membre de la classe OSBP_MainFrm, il sera déjà préférable de la déclarer Shared comme ceci:
Public Shared Sub BrowseBprDir()
End Sub
Et de l'appeler dans les enfants comme ceci :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
OSBP_MainFrm.BrowseBprDir()
End Sub
2) Si votre méthode BrowseBprDir() accède à des membres de la classe OSBP_MainFrm, il sera préférable de l'appeler dans les enfants comme ceci:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If (Me.MdiParent IsNot Nothing) Then
CType(Me.MdiParent, ParentFrm).BrowseBprDir()
End If
End Sub
J'ai fait un essai avec cette example et je n'ai pas d'erreur :
Public Class ParentFrm
Public Sub BrowseBprDir()
Dim BrwseBpr As New FolderBrowserDialog
BrwseBpr.RootFolder = Environment.SpecialFolder.Desktop
BrwseBpr.Description = "Sélectionnez un répertoire"
BrwseBpr.ShowDialog()
If BrwseBpr.SelectedPath = String.Empty Then
MsgBox("Pas de sélection")
Else
MsgBox(BrwseBpr.SelectedPath)
End If
BrwseBpr.Dispose()
End Sub
Private Sub CreateToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CreateToolStripMenuItem.Click
Dim child As New ChildFrm()
child.MdiParent = Me
child.Show()
End Sub
End Class
Public Class ChildFrm
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If (Me.MdiParent IsNot Nothing) Then
CType(Me.MdiParent, ParentFrm).BrowseBprDir()
End If
End Sub
End Class
Si ce même exemple provoque une erreur chez vous, précisez moi votre environnement (système d'exploitation ? visual studio ? dans le cas d'un studio > à 2005 la version du framework utilisé ?)