Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Déplacer un formulaire à partir d'un contrôle ??? [ Windows / Formulaire / Winforms / Controls ] (EmacLi)

vendredi 28 juillet 2006 à 09:03:27 | Déplacer un formulaire à partir d'un contrôle ???

EmacLi

Bonjour,

Quelqu'un pourrait il me dire comment faire pour déplacer un formulaire à partir d'un contrôle ?

En faite j'ai un panel et je voudrais déplacer mon fomulaire à partir de celui ci, sur l'évènement MouseDown.

Merci à tous

vendredi 28 juillet 2006 à 09:33:11 | Re : Déplacer un formulaire à partir d'un contrôle ???

sebmafate

Membre Club Administrateur CodeS-SourceS
genre un formulaire sans barre de titre :)

il faut utiliser le message WM_NCHITTEST...

ex:

private override WndProc(ref Message m) {
    if (m.Msg == 0x0084) {   // WM_NCHITTEST
       if (this.myPanel.Bounds.Contains(MousePosition)) {
          return 0x2; // HTCAPTION
        } else {
          return 0x1; // HTCLIENT
        }
    }
}

Pour plus d'infos : http://msdn.microsoft.com/library/.../wm_nchittest.asp

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft MVP Visual C#]


vendredi 28 juillet 2006 à 10:05:47 | Re : Déplacer un formulaire à partir d'un contrôle ???

EmacLi

Merci pour la piste mais c'est pas encore tout à fait ca.

Que siginfie au juste WM_NCHITTEST ?

Parceque ton code ne rentre jamais dans le premier if().

Merci.

vendredi 28 juillet 2006 à 10:13:06 | Re : Déplacer un formulaire à partir d'un contrôle ???

sebmafate

Membre Club Administrateur CodeS-SourceS
il faut mettre ca dans le formulaire...

WM_NCHITTEST :
    -> WM : Windows Message
    -> NC : Non Client
    -> HITTEST : teste de "hit"

en gros, c'est le message qui demande à la fenetre si le curseur se trouve dans une zone cliente ou non de la fenêtre...

j'ai d'ailleur fait une bourde dans mon code...

private override WndProc(ref Message m) {
    if (m.Msg == 0x0084) {   // WM_NCHITTEST
       if (this.myPanel.Bounds.Contains(MousePosition)) {
          return 0x2; // HTCAPTION
        } else {
          return 0x1; // HTCLIENT
        }
    } else {
       base.WndProc(ref m);
    }

}

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft MVP Visual C#]


vendredi 28 juillet 2006 à 11:53:59 | Re : Déplacer un formulaire à partir d'un contrôle ???

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !

Tu as écrit un peu vite Seb , les valeurs de retour c'est à m.Result qu'il faut les attribuées. Pas sûr non plus que que la fenêtre recoit WM_NCHITTEST quand on passe au dessus du contrôle faudrait overrider la fonction WndProc du Panel pour ça.

EmacLi, tu as un exemple sur Codyx :

http://www.codyx.org/snippet_deplacer-forme-sans-barre-titre_23.aspx

Autre exemple pour déplacer ta forme avec le Panel :

public partial class Form1 : Form
{
    private Panel panel = null;
    private Point position = Point.Empty;

    public Form1( )
    {
        InitializeComponent( );

        panel = new Panel( );
        panel.BackColor = Color.Azure;
        panel.MouseDown += delegate( object sd, MouseEventArgs e )
        {
            if ( e.Button == MouseButtons.Left )
                position = e.Location;
        };
        panel.MouseMove += delegate( object sd, MouseEventArgs e )
        {
            if ( e.Button == MouseButtons.Left )
            {
                int x = this.Left + ( e.X - position.X );
                int y = this.Top + ( e.Y - position.Y );
                this.Bounds = new Rectangle( x, y, this.Width, this.Height );
            }
        };

        this.Controls.Add( panel );
    }
}


vendredi 28 juillet 2006 à 11:57:35 | Re : Déplacer un formulaire à partir d'un contrôle ???

sebmafate

Membre Club Administrateur CodeS-SourceS
hum... ooops...

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft MVP Visual C#]


lundi 31 juillet 2006 à 08:53:45 | Re : Déplacer un formulaire à partir d'un contrôle ???

EmacLi

Merci Lutinore, je viens d'opter pour ta solution.

En effet, la méthode WndProc appartient au formulaire et non au contrôle, elle n'est donc pas appelée lors du clic sur le panel.

Merci à tous pour votre aide !


mercredi 2 août 2006 à 10:47:47 | Re : Déplacer un formulaire à partir d'un contrôle ???

EmacLi

Dit Lutinore,

Peut tu m'expliquer ce que tu fait avec tes déléguées ?

Tu rajoute un délégué à l'évenement MouseMouve ? Ce n'est pas plutôt l'évenement qui doit être ajouté au délégué ?

Merci d'avance.


mercredi 2 août 2006 à 13:09:58 | Re : Déplacer un formulaire à partir d'un contrôle ???

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !

C'est une méthode anomyme..

.NET 1.1

this.Click += new EventHandler( Form1_Click );

void Form1_Click( object sender, EventArgs e )
{
   MessageBox.Show( "Hello" );
}


.NET 2.0

this.Click += Form1_Click;

void Form1_Click( object sender, EventArgs e )
{
 
}

ou

this.Click += delegate( object sd, EventArgs e )
{
    MessageBox.Show( "Hello" );
};

et ( sans paramètre )

this.Click += delegate { MessageBox.Show( "Hello" ); };


mercredi 2 août 2006 à 14:10:28 | Re : Déplacer un formulaire à partir d'un contrôle ???

EmacLi

Merci pour cette précision



Cette discussion est classé dans : partir, formulaire, contrôle, déplacer


Répondre à ce message

Sujets en rapport avec ce message

Ajouter un formulaire dans un panel [ par tchoucky ] J'avais réussit à inserer un formulaire dans un panel mais malheuresement, je n'y arrive plus.Si j'ajoute simplement le form dans les controls du pane Crystal report [ par jorrie ] Bonjours a tous, Comment puis je atteindre un champ text d'un etat report sous vs.net a partir d'un formulaire qui a un viewer.j'aimerais affecter un Renvoyer une valeur à partir d'un formulaire [ par gregoire2008 ] Bonjour, j'ai un probleme entre deux formulaire je voudrais que quand je ferme le second, le premier récupere une valeur modifier dans le second. J'ai evenements ???? [ par cudenetf ] bonjour,une autre petite question parce que la je m'y perdj'ai un formulaire mdids lequel j'ai d'autres formulaires.A partir d'un formulaire (fils) je repeter un formulaire dans word a partir d'un template [ par vboussema ] salut;j'ai un template word qui contient un formulaire avec des signers...j'ai réussi a créer un document word à partir de ce template en mettant les Accès un un contrôle à partir d'une autre class !!! [ par CSharpJSharp ] Bonjour ;J'ai une forme (class) principale : MainForm sur laquelle  j'ai déposé un contrôle button1. J'ai rajouté une deuxième forme (class) OptionsFo ToolBar que l'on peut déplacer [ par guillrich ] Y a t-il quelqu'un qui sait comment faire une toolbar que l'on peut déplacer et mettre en fenêtre (comme dans Word, Visual Studio, ...) dans une appli Appel d'un évènement à partir du code [ par patemino ] Voilà mon problèmeJ'ai un évènement appelé btnValider_Click qui correspond à un click sur le bouton valider !J'aimerais pourvoir appelé le code qui co [Winform] Redimension de formulaire [ par stailer ] Bonjour tout le monde,j'aurai une petite question :Comment, en restant appuyé sur un bouton placé dans un formulaire, redimensionner ma form en bougea Affichage d'une interface au click d'un control TextBox en ASP.NET [ par Alex009 ] BonjourJ'ai un formulaire( xyz.aspx) avec plusieurs controls de textbox qui prendront le detail de chaque article, j'aimerai afficher une interface(ou


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,172 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.