none
Faire des boutons personnalisés et interaction avec PictureBox RRS feed

  • Question

  • Bonjour à tous,

     

    Je voudrais créer des boutons personnalisés. Pour cela je possède trois images, les images par défaut, les images quand le bouton est survolé et les images quand le bouton est enfoncé.

    J'aimerai savoir comment à partir de ces images faire des boutons personnalisés.

    Autre question : Quelle est la commande pour minimiser l'application dans la barre des tâches ?

    Et pour finir, j'aimerai savoir comment faire pour que lors d'un glisser-déposer sur une PictureBox ça bouge la fenêtre, comme l'interface Windows !

     

    Merci d'avance !

    mercredi 23 juin 2010 20:08

Réponses

  • Bonjour,

     

    Pour afficher une image sur un bouton, utilisez la propriété BackgroundImage 

     

    Pour minimiser l’application :

    Me.WindowState = FormWindowState.Minimized

     

     

    Pour déplacer un PictureBox, utilisez le code suivant :

    Private myclick As Boolean = False

        Private mypoint As Drawing.Point

     

     

        Private Sub PictureBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown

            myclick = True

            mypoint = New Point(e.X, e.Y)

        End Sub

       

        Private Sub PictureBox1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp

            myclick = False

        End Sub

     

        Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

            If myclick = True Then

                Me.PictureBox1.Left = Me.PictureBox1.Left + e.X - mypoint.X

                Me.PictureBox1.Top = Me.PictureBox1.Top + e.Y - mypoint.Y

            End If

        End Sub

     

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    Café des usages

     

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    jeudi 24 juin 2010 11:32
  • Bonjour,

    Pour commencer, le BackgroundImage ne met qu'une image de fond avec les bords, et soit l'image est coupée, soit il y a une bordure blanche, bref ce n'est pas très bien. Il faudrait pouvoir faire une PictureBox dynamique...
    Jonglez avec la propriété BackgroundImageLayout.

    Autre problème, le code pour bouger la PictureBox ne bouge que la PictureBox, or j'aimerai que ça bouge toute la form !
    Reprennez le code de M. PETRESCU comme ceci :

    Me.Left = Me.Left + e.X - mypoint.X
    Me.Top = Me.Top + e.Y - mypoint.Y
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    jeudi 24 juin 2010 20:26
    Modérateur
  • Bonjour,

    Pour extraire votre exécutable :

    ' Récupérer un nom de fichier temporaire
    Dim fichierTemp As String
    fichierTemp = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "MyExe.exe")
    
    System.IO.File.WriteAllBytes(fichierTemp, My.Resources.InstallWoW)

    Et si c'est possible, comment faire un SVN Checkout sur un dossier au clic sur un bouton ?
    Il faudra voir du côté de la communauté SVN pour cette question...

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mardi 29 juin 2010 20:01
    Modérateur

Toutes les réponses

  • Bonjour,

     

    Pour afficher une image sur un bouton, utilisez la propriété BackgroundImage 

     

    Pour minimiser l’application :

    Me.WindowState = FormWindowState.Minimized

     

     

    Pour déplacer un PictureBox, utilisez le code suivant :

    Private myclick As Boolean = False

        Private mypoint As Drawing.Point

     

     

        Private Sub PictureBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown

            myclick = True

            mypoint = New Point(e.X, e.Y)

        End Sub

       

        Private Sub PictureBox1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp

            myclick = False

        End Sub

     

        Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

            If myclick = True Then

                Me.PictureBox1.Left = Me.PictureBox1.Left + e.X - mypoint.X

                Me.PictureBox1.Top = Me.PictureBox1.Top + e.Y - mypoint.Y

            End If

        End Sub

     

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    Café des usages

     

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    jeudi 24 juin 2010 11:32
  • Merci pour le code pour minimiser la fenêtre, ça m'a bien avancé dans mon projet !

    Mais je rencontre des problèmes.

    Pour commencer, le BackgroundImage ne met qu'une image de fond avec les bords, et soit l'image est coupée, soit il y a une bordure blanche, bref ce n'est pas très bien. Il faudrait pouvoir faire une PictureBox dynamique...

    Autre problème, le code pour bouger la PictureBox ne bouge que la PictureBox, or j'aimerai que ça bouge toute la form !

     

    Merci !

     

    edit : et j'aimerai aussi savoir comment compiler un .exe dans un projet pour que l'utilisateur puisse le lancer au clic sur un bouton...

    jeudi 24 juin 2010 11:58
  • Bonjour,

    Pour commencer, le BackgroundImage ne met qu'une image de fond avec les bords, et soit l'image est coupée, soit il y a une bordure blanche, bref ce n'est pas très bien. Il faudrait pouvoir faire une PictureBox dynamique...
    Jonglez avec la propriété BackgroundImageLayout.

    Autre problème, le code pour bouger la PictureBox ne bouge que la PictureBox, or j'aimerai que ça bouge toute la form !
    Reprennez le code de M. PETRESCU comme ceci :

    Me.Left = Me.Left + e.X - mypoint.X
    Me.Top = Me.Top + e.Y - mypoint.Y
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    jeudi 24 juin 2010 20:26
    Modérateur
  • Merci ça marche :)

    Et pour inclure le .exe ?

    jeudi 24 juin 2010 21:12
  • Bonjour,

     

    Vous voulez inclure un exécutable dans votre projet ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur une de ces technologies : Visual Basic, C#, C++, .NET, ASP.NET, SQL Server, Silverlight, SharePoint 2010, SharePoint 2007

     

    Astuces pour Visual Studio 2010

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Workflow Foundation

     

     

    Café des usages

     

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     

    vendredi 25 juin 2010 08:49
  • Oui, j'aimerai inclure un éxécutable dans le projet pour qu'au clic sur un bouton il se lance...
    vendredi 25 juin 2010 08:58
  • Ajouter un "process" puis dans ses propriétés "startinfo" il faut indiquer où se trouve l'exécutable (ou un autre fichier) grâce à "filename".         Dans le code de ton bouton tu n'as plus qu'à inscrire:

    Process1.Start()

    Si tu n'arrives pas tu peux regarder cette vidéo en deux parties: http://www.youtube.com/watch?v=d3ZVWLTHp1A&feature=related

                                                                                                 http://www.youtube.com/watch?v=eo9zIlZcrpQ&NR=1

     

     

                                                          Mes meilleures salutations, Jojo

    samedi 26 juin 2010 08:11
  • Oui, mais le problème est que l'éxécutable ne se compile pas dans le projet, donc il faut avoir deux éxécutables, or je n'aimerai en avoir qu'un...
    samedi 26 juin 2010 10:30
  • A mon avis il faut mettre l'exécutable dans les ressources du logiciel.

     

                                           Jojo

    dimanche 27 juin 2010 07:53
  • Oui j'y ai pensé, mais quand je fait :

     

    Shell(My.Resources.InstallWoW)

     

    Il me dit que InstallWoW n'est pas un membre de EasyWoW.EasyWoW.Resources ><

    dimanche 27 juin 2010 12:01
  • Bonjour,

    Vous ne pouvez pas lancer directement un executable qui se trouve dans des ressources. Vous devez extraire votre executable et le lancer, ou alors déployer votre exécutable avec l'excutable qui le lance.

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    lundi 28 juin 2010 06:36
    Modérateur
  • Oui, c'est ça que je voudrais, il extrais dans le répertoire temporaire de Windows et il le lance.

    Et si c'est possible, comment faire un SVN Checkout sur un dossier au clic sur un bouton ?

    lundi 28 juin 2010 14:59
  • Bonjour,

    Pour extraire votre exécutable :

    ' Récupérer un nom de fichier temporaire
    Dim fichierTemp As String
    fichierTemp = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "MyExe.exe")
    
    System.IO.File.WriteAllBytes(fichierTemp, My.Resources.InstallWoW)

    Et si c'est possible, comment faire un SVN Checkout sur un dossier au clic sur un bouton ?
    Il faudra voir du côté de la communauté SVN pour cette question...

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mardi 29 juin 2010 20:01
    Modérateur
  • Le logiciel crash quand on clique sur le bouton... Il bloque et reste comme ça...
    mercredi 30 juin 2010 09:12
  • Bonjour,

    Quelle erreur se produit ? Est-ce un logiciel à vous qui est lancé ou celui d'un éditeur tiers ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mercredi 30 juin 2010 09:30
    Modérateur
  • Il faut juste attendre, le programme ne réponds pas pendant une ou deux minutes et le logiciel se lance.
    mercredi 30 juin 2010 09:38
  • Bonjour,

    le programme ne réponds
    Lequel ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    mercredi 30 juin 2010 09:55
    Modérateur
  • Le mien que j'ai créé.
    mercredi 30 juin 2010 15:31
  • Bonjour,

    Pour être plus clair : C'est celui qui est lancé ou celui qui lance l'application ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    jeudi 1 juillet 2010 08:35
    Modérateur
  • C'est celui qui lance l'application, mais c'est bon le problème est réglé, juste à remplacer Process.Start() par Shell().

    J'ai essayé d'adapter le code donné plus haut pour que le coin haut gauche de PictureBox3 suive la souris, mais je n'ai pas réussi. Quelqu'un pourrais m'aider ?

    vendredi 2 juillet 2010 15:52
  • Bonjour,

    Quel est votre problème ?

    Merci de bien vouloir éviter de poser questions dans la même conversation !

    Cordialement


    Gilles TOURREAU - MVP C# - MCTS Windows Forms - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 2 juillet 2010 18:47
    Modérateur