IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.Net][VS2003]Déplacer un controle dynamiquement.


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2006
    Messages : 27
    Points : 29
    Points
    29
    Par défaut [VB.Net][VS2003]Déplacer un controle dynamiquement.
    Langage : VB.Net
    Framework : 1.1
    IDE : VS 2003

    Bonjour, je travaille actuellement sur une application avec un module calendrier. Dans ce dernier, il me faudrait déplacer des controles (label) par un simple mouvement de souris.

    J'ai trouvé des codes sur ce forums me permettant de le faire via un drag&drop. Seulement j'aimerais qu'on voit rellement le trajet de mon controle.
    J'ai donc vu qu'on pouvait utilisé une API. Seulement je n'ai trouvé qu'un code en C#.

    Déclaration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    using System.Runtime.InteropServices;
     
    private const int HTCAPTION = 0x2;
    private const int WM_NCLBUTTONDOWN = 0xA1;
     
    [DllImport("User32.dll")] 
    public static extern bool ReleaseCapture(); 
     
    [DllImport("User32.dll")] 
    public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
    Sur événement MouseDown du panel1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
         if (e.Button == MouseButtons.Left) 
         { 
             ReleaseCapture(); 
            SendMessage(this.panel1.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); 
          } 
     
    }

    J'aimerais si possible qu'on m'éclaire (pas trop, il fait deja bien chaud : ) ) au niveau de la déclaration. (les convertisseurs de code ne donnant pas grand chose.
    En effet, à quoi correspondent les "0x2" et "0xA1" ?
    Et comment traduire le DLL Imports

    Merci d'avance.

  2. #2
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    private const int HTCAPTION = 0x2;
    private const int WM_NCLBUTTONDOWN = 0xA1;
    Ce sont les valeurs des constantes en hexa (en fin je crois)

    Et comment traduire le DLL Imports
    Je connais pas trop VB.Net mais tout ce qui change je crois entre C# et VB.Net au niveaux des attributs c'est les "[" et "]" qui se transforment en "<" et ">".
    A vérifier mais je penses que c'est ça

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2006
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    Ok pour l'hexa, c'est visiblement ca et ca passe en mettant
    Maintenant je n'arrive vraiment pas a traduire les fonctions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [DllImport("User32.dll")] 
    public static extern bool ReleaseCapture(); 
     
    [DllImport("User32.dll")] 
    public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
    (C'est bien < > à la place de [ ])
    Merci guitoux

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2006
    Messages : 27
    Points : 29
    Points
    29
    Par défaut
    J'ai réussi à régler le problème.

    Je met la source au cas ou ca puisse servir à quelqu'un.

    (Ne pas oublier de faire l'imports de System.Runtime.InteropServices)


    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
    #Region "API - Deplacement du panel"
        Private Const HTCAPTION As Integer = 2
        Private Const WM_NCLBUTTONDOWN As Integer = 161
     
     
        <DllImport("User32.dll")> _
        Public Shared Function ReleaseCapture() As Boolean
        End Function
     
        <DllImport("User32.dll")> _
       Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
        End Function
     
        Private Sub pnlNouvelleAct_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pnlNouvelleAct.MouseDown
            ReleaseCapture()
            SendMessage(Me.pnlNouvelleAct.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)
        End Sub
    #End Region

  5. #5
    Membre habitué
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Points : 135
    Points
    135
    Par défaut
    Merci ca m'a bien aidé !! Eventuellement saurais tu quelles sont les fonctions a importer pour gerer le docking du panel ?

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET]évènement sur un controle dynamique
    Par Tunisiano87 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 11/11/2010, 03h29
  2. [VB.NET] Contrôle dynamique et évènements
    Par johann.C dans le forum ASP.NET
    Réponses: 4
    Dernier message: 30/11/2009, 10h45
  3. Réponses: 3
    Dernier message: 11/07/2006, 13h43
  4. [VB.NET] Pb sur la génération de control dynamique.
    Par bisounux dans le forum ASP.NET
    Réponses: 16
    Dernier message: 19/01/2006, 19h43
  5. [VB.NET] Ajout de controles dynamiquement
    Par A77 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/04/2005, 09h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo