Changer la couleur barre de titre d'une form

namo2015 13 Messages postés vendredi 8 mai 2015Date d'inscription 16 novembre 2015 Dernière intervention - 9 nov. 2015 à 23:14 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 17 nov. 2015 à 07:22
Bonjour,
Peut-on personnaliser la barre de titre des form comme par exemple changer la couleur et y ajouter des contrôles. Si oui comment le faire.
J'ai besoin de vos aides.

Merci.
Afficher la suite 

Votre réponse

9 réponses

cs_Le Pivert 5343 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 18 septembre 2018 Dernière intervention - 10 nov. 2015 à 08:00
Commenter la réponse de cs_Le Pivert
namo2015 13 Messages postés vendredi 8 mai 2015Date d'inscription 16 novembre 2015 Dernière intervention - 11 nov. 2015 à 12:11
0
Merci
Merci, cs_Le Pivert, pour ton aide.

Avec ta source j'ai fait une Form avec FormBorderStyle à none, j'y ajoute des boutons réduire agrandir et fermer, aussi avec déplacement possible de la Form.
Cependant je rencontre un problème. Le WindowState de ma Form est sur Maximized, quand je lance l'application ma Form occupe tout l'écran de l'ordi (on ne vois même pas la barre des tâches). Je voudrais qu'elle occupe l'écran comme les autres applications.
Ensuite comment faire pour l'agrandir et la réduire avec la souris sur ses bords.
Commenter la réponse de namo2015
cs_Le Pivert 5343 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 18 septembre 2018 Dernière intervention - 11 nov. 2015 à 14:09
0
Merci
Voir ceci:

https://vbnetpourtous.wordpress.com/2013/01/04/les-proprietes-dun-formulaire/


Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.ShowInTaskbar = False 'barre de tâche visible
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable
        Me.AutoSize = True
        Me.SizeGripStyle = Windows.Forms.SizeGripStyle.Show
    End Sub
    End Class

Commenter la réponse de cs_Le Pivert
namo2015 13 Messages postés vendredi 8 mai 2015Date d'inscription 16 novembre 2015 Dernière intervention - 11 nov. 2015 à 22:34
0
Merci
Je m'explique.

J'ai une form dont le FormBorderStyle est a None. Voir l'image(ressemble un peu à celle de VS 2013):


Au lancement de l'application la Form s'ouvre en Maximized mais elle occupe toute la surface de l'écran comme suit:


Quand j'utilise la propriété ShowInTaskbar voila ce que ça donne:


On ne voit pas bien les extrémités de la Form. Je veux une Form en Maximized qui s'ouvre dans les limite du bureau.

Deuxièmement, j'aimerais étirer les bordure (haut, gauche, bas, droit) de ma Form avec la souris comme pour les Forms Sizable.

En gros j'ai une Form sans bordure que j'aimerais qu'elle se comporte comme une Form normale. Sans bordure parce qu'elle me permet de créer ma propre barre de titre.
cs_Le Pivert 5343 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 18 septembre 2018 Dernière intervention - 12 nov. 2015 à 07:44
As-tu consulté le site que je t'ai indiqué?
Je ne le pense pas, car tu aurais pu lire ceci:

None : Une fenêtre sans bordure qui ne peut pas être redimensionnée. Cette valeur est rarement utilisée :

Si tu veux imposer une taille il faut utiliser ceci:

Me.MinimumSize = New Size(400, 300 + SystemInformation.CaptionHeight)'taille a adapter à ton écran

et non Maximized

@+ Le Pivert
cs_Le Pivert 5343 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 18 septembre 2018 Dernière intervention - 12 nov. 2015 à 11:54
Voilà le code:

Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim Width As String
        Dim Height As String
        Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width.ToString()
        Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height.ToString()
        Me.ShowInTaskbar = False 'barre de tâche visible
        Me.MinimumSize = New Size(CInt(CDbl(Width) - 10), (CInt(CDbl(Height) - 50) + SystemInformation.CaptionHeight)) 'taille  adapter à ton écran 
        Me.Location = New Point(0, 0) 'location du Form
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable
        Me.AutoSize = True
        Me.SizeGripStyle = Windows.Forms.SizeGripStyle.Show
    End Sub
End Class
Commenter la réponse de namo2015
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 11/11/2015 à 23:57
0
Merci
Bonjour,
1) je suis développeur sous VB6, pas sous VB.Net
2) sous VB6, l'utilisation du contrôle sysinfo nous permet de connaître les positions et dimensions de l'espace de travail réel (qui dépend donc également de la position et des dimensions de la barre des tâches) ===>> SysInfo1.WorkAreaTop, left, height et width
Tout cela tient compte (et s'adapte) de l' "état" (configuration) de la barre des tâches (toujours visible, escamotable, etc ...)
3) il est important d'avoir ces informations lorsque l'appli est destinée à être distribuée car la barre des tâches peut être configurée très différemment d'un pc à l'autre ... sa position (verticale, horizontale, etc ...) également. Ces informations sont donc recueillies en mode exécution, puis le form est positionné comme il le faut à partir de ces renseignements.
4) si ton appli est à distribuer, il serait très maladroit d'inviter le client à positionner le Form à la souris !
5) je crois comprendre que, sous VB.Net, l'équivalent de ce que nous avons sous VB6 est ceci :
https://msdn.microsoft.com/en-us/library/system.windows.forms.screen.workingarea%28v=vs.110%29.aspx
sers-t-en

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Commenter la réponse de ucfoutu
namo2015 13 Messages postés vendredi 8 mai 2015Date d'inscription 16 novembre 2015 Dernière intervention - 16 nov. 2015 à 22:53
0
Merci
Effectivement, ucfoutu, Screen.PrimaryScreen.WorkingArea est l'équivalent vb.net.

Vos deux solution marche pour agrandir la form dans les limites du bureau.

Ayant résolu le problème d'agrandissement, mes recherches sont portées sur le redimensionnement de la forme par ses 4 cotés et 4 angles.
Voici ce que j'ai trouvé:
Public Class Form1

    Private Declare Function ReleaseCapture Lib "user32" () As Integer
    Private Const HTCAPTION As Integer = 2
    Private Const WM_NCLBUTTONDOWN As Integer = &HA1S
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As Integer) As Integer

    Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown

        If e.Button = Windows.Forms.MouseButtons.Left And Me.Cursor = Cursors.Default Then
            ReleaseCapture()

            SendMessage(Me.Handle.ToInt32, WM_NCLBUTTONDOWN,
            HTCAPTION, 0)
        End If
    End Sub

    Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
        'Definir le champs du resize <
        If e.Location.X > (Me.Size.Width - 5) And e.Location.Y > (Me.Size.Height - 5) Then
            ' changement du cursor (souris)
            Cursor = Cursors.SizeNWSE
            ' Si je clic sur le bouton gauche
            If e.Button = Windows.Forms.MouseButtons.Left Then
                ' redimentionnement de la forme
                Me.ClientSize = New System.Drawing.Size(e.Location.X, e.Location.Y)
            End If
        Else
            'Si non le cursor redeviens normal
            Cursor = Cursors.Default
        End If
    End Sub

End Class


Avec ce code j'arrive à déplacer la form et à la redimensionner à partir de son du coin inférieur droit.
je ne maitrise pas bien encore les coordonnées et les localisations. J'ai besoin de vos aides pour m'aider à permettre le redimensionnement de ma form par ses 4 cotés et ses 4 angle à partir de ce code.
Commenter la réponse de namo2015
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 17 nov. 2015 à 07:22
0
Merci
Ton espace disponible (workingarea) a des propriétés (celles d'un rectangle) que tu trouveras ici :
https://msdn.microsoft.com/en-us/library/system.drawing.rectangle
(top,Left,width,Height)
Ton Form également.
Le reste coule tellement de source !
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.