Bonjour,
Est-il possible de supprimer la bordure d'un MDIContainer
et de modifier sa couleur de fond?
Merci
Bonjour,
Est-il possible de supprimer la bordure d'un MDIContainer
et de modifier sa couleur de fond?
Merci
j'ai un peu la fléme d'ouvrir vb.net aujourd'hui
donc regarde dans la bibliothèque d'objet atu devrai ab=voir des propriété et des méthode derrièrefrm2.MdiParent
bonjour
il n'est pas possible de changer la couleur de fond elle prend la couleur systeme du panneau de configuration.
mais on peut contourner une image .
la bordure oui c'est possible.
voici un bout de code:
bon code.....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 'le fond avec une image dans resources (compiler avec resource incorpore) Me.BackgroundImage = My.Resources.Collines 'sans bordure ni croix Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Bonjour,
pour modifier le BackColor, il y a cette astuce que j'avais lu quelque part :
A mettre dans le Load du MDI Form et voir si cela fonctionne?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ' pour forcer la couleur de fond d'un MDI Form. For Each ctrl As Control In Me.Controls If ctrl.GetType() Is GetType(Windows.Forms.MdiClient) Then ctrl.BackColor = Color.Coral '.FromArgb(202, 207, 223) Exit For End If Next
Merci pour vos réponse.
Après plusieurs recherches, j'ai trouvé un code qui me permet de supprimer le bord.
Grâce au bout de code que chrismonoye a donné et celui-ci,
mon problème est résolu.
Voici comment résoudre ce problème:
Créer un module du nom de MdiClientPanel.vb puis ajouter-y ce code
Ah, j'oublais. Il permet aussi de mettre le MDI container dans un panel au lieu de la forme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 Imports System.Runtime.InteropServices Public Class MdiClientPanel Inherits Panel Private m_mdiForm As Form Private ctlClient As New MdiClient() Public ReadOnly Property MdiForm() As Form Get If Me.m_mdiForm Is Nothing Then Me.m_mdiForm = New Form() Dim field As System.Reflection.FieldInfo = GetType(Form).GetField("ctlClient", System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Instance) field.SetValue(Me.m_mdiForm, Me.ctlClient) End If Return Me.m_mdiForm End Get End Property Public Sub New() ' Cet appel est requis par le Concepteur Windows Form. MyBase.Controls.Add(Me.ctlClient) ' Ajoutez une initialisation quelconque après l'appel InitializeComponent(). Dim mdiClient As MdiClient = Nothing ' Parcourt des contrôles de la Form For i As Integer = 0 To Me.Controls.Count - 1 ' Si le Form est un MDI Container, il contient un client MDIClient mdiClient = TryCast(Me.Controls(i), MdiClient) If mdiClient IsNot Nothing Then Exit For End If Next ' Si le contrôle MDIClient est trouvé If mdiClient IsNot Nothing Then Dim iStyle As Integer = Win32.GetWindowLong(mdiClient.Handle, Win32.GWL_EXSTYLE) 'Suppression du style WS_EX_CLIENTEDGE des styles étendus du contrôle courant iStyle = iStyle And Not Win32.WS_EX_CLIENTEDGE 'Application du nouveau style iStyle = Win32.SetWindowLong(mdiClient.Handle, Win32.GWL_EXSTYLE, iStyle) End If For Each ctrl As Control In Me.Controls If ctrl.GetType() Is GetType(Windows.Forms.MdiClient) Then ctrl.BackColor = Color.White '.FromArgb(202, 207, 223) Exit For End If Next End Sub End Class Public NotInheritable Class Win32 Private Sub New() End Sub <DllImport("user32.dll")> _ Public Shared Function GetWindowLong(ByVal window As IntPtr, ByVal index As Integer) As Integer End Function <DllImport("user32.dll")> _ Public Shared Function SetWindowLong(ByVal window As IntPtr, ByVal index As Integer, ByVal value As Integer) As Integer End Function Public Const GWL_EXSTYLE As Integer = -20 Public Const WS_EX_CLIENTEDGE As Integer = &H200 End Class
Utilisation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dim child As New Form child.MdiParent = MdiClientPanel1.MdiForm
Excellentissime !
Il y a juste une boucle en trop !
Il remplacer :
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 If mdiClient IsNot Nothing Then Dim iStyle As Integer = Win32.GetWindowLong(mdiClient.Handle, Win32.GWL_EXSTYLE) 'Suppression du style WS_EX_CLIENTEDGE des styles étendus du contrôle courant iStyle = iStyle And Not Win32.WS_EX_CLIENTEDGE 'Application du nouveau style iStyle = Win32.SetWindowLong(mdiClient.Handle, Win32.GWL_EXSTYLE, iStyle) End If For Each ctrl As Control In Me.Controls If ctrl.GetType() Is GetType(Windows.Forms.MdiClient) Then ctrl .BackColor = Color.White'.FromArgb(202, 207, 223) Exit For End If Next
Et pour le form :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 If mdiClient IsNot Nothing Then Dim iStyle As Integer = Win32.GetWindowLong(mdiClient.Handle, Win32.GWL_EXSTYLE) 'Suppression du style WS_EX_CLIENTEDGE des styles étendus du contrôle courant iStyle = iStyle And Not Win32.WS_EX_CLIENTEDGE 'Application du nouveau style iStyle = Win32.SetWindowLong(mdiClient.Handle, Win32.GWL_EXSTYLE, iStyle) mdiClient.BackColor = Color.White End If
Le code devrais être dans les FAQ s'il n'y est pas déjà !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim toto As New Form2 With {.MdiParent = MdiClientPanel1.MdiForm} toto.Show() End Sub
EDIT :
C'est presque parfait, il manque les TopLevel
Il faut mettre le TopLevel de la form du Panel à false et le TopLevel de la fenêtre principal à true, sinon on ne peut plus récupérer le focus
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager