bonjour loki9481
Ce comportement est semblable à celui d'un UserControl car un formulaire herite qu'il soit MDI ou non se comporte de la meme mainiere .
La technique pour surmonter ce probleme est de "wrapper" les proprietes qu'on veut acceder -une à une- du
control depose sur le form MDI par des prop dans le formulaire MDI comme cela se fait pour un UserControl.
Dans ton cas il suffit de "wrapper" la prop MenuItems de MainMenu dans une simple prop publique de ton form MDI avec un attribut "browsable" pour la voir dans le designer apres avoir cree le form herite.......
exemple code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
'projet lib(.dll) de ton form MDI
'l"attribut protected bien sur sera mis sur MainMenu
'nota-bene:la prop ne sera pas visibledans le designer dans projet actuel
Imports System.ComponentModel
Imports System.Windows.Forms.Menu
Public Class frmMDI
Public Sub New()
' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
Me.WindowState = FormWindowState.Maximized
Me._myMenuItems = Me.MainMenu1.MenuItems
End Sub
'propriete de wrapper de la prop collection MenuItems
'qu'on veut acceder
'Attribut :Browsable pour la voir(attention:apres ajout dans ton projet) dans le designer VS
'et pouvoir ajouter des sous-menus
Private _myMenuItems As MenuItemCollection
<Browsable(True)> _
Public Property MyMenuItems() As MenuItemCollection
Get
Return Me._myMenuItems
End Get
Set(ByVal value As MenuItemCollection)
Me._myMenuItems = value
End Set
End Property
'menu item classique de base New
Private Sub NewMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewMenuItem.Click
Dim NewMDIChild As Form = New Form()
'Set the Parent Form of the Child window.
NewMDIChild.MdiParent = Me
NewMDIChild.BackColor = Color.Red
'Display the new form.
NewMDIChild.Show()
End Sub
Private Sub CloseMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CloseMenuItem.Click
Me.ActiveMdiChild.Close()
End Sub
End Class |
bon code.........................
Partager