[Winform] Redimension de formulaire

Résolu
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 - 22 juil. 2004 à 12:11
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 - 22 juil. 2004 à 22:12
Bonjour tout le monde,

j'aurai une petite question :

Comment, en restant appuyé sur un bouton placé dans un formulaire, redimensionner ma form en bougeant la souris vers la gauche ou la droite ?

J'ai bien essayé avec la surcharge de WndProc mais ca fonctionne sur le bouton et tous le formulaire. Puisque ce dernier détecte la même valeur pour toute l'aire client et quel que soit le controle.

Merci pour votre aide,

<-- St@iLeR -->

8 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
22 juil. 2004 à 12:55
un petit exemple
je pars du principe que le bouton suis la redim du form (via Anchor par exemple) et en me basant donc sur un bouton restant toujours dans le coin inférieur droit du form

private bool isRedim;
private Point oldCursorPosition;

private void button_redim_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
isRedim = true;
oldCursorPosition = Cursor.Position;
}

private void button_redim_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
isRedim = false;
}

private void button_redim_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if ( isRedim == true )
{
int xChange = Cursor.Position.X - oldCursorPosition.X;
int yChange = Cursor.Position.Y - oldCursorPosition.Y;
Rectangle bounds = new Rectangle(this.Bounds.X, 
this.Bounds.Y, 
this.Bounds.Width + xChange, 
this.Bounds.Height + yChange 
);
this.Bounds = bounds;

oldCursorPosition = Cursor.Position;
}
}


Cocoricoooooooo !!!!
3
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
22 juil. 2004 à 13:43
Merci !

Ca marche impec !

Pour Nix : Lorsque l'on valide une réponse le message d'alerte comporte une faute, il y a écrit :

"Etes-vous que ce message...".

il manque le mot "sûr".

<-- St@iLeR -->
0
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
22 juil. 2004 à 17:50
Re-salut,

J'ai encore un petit souci quand même :

lorsque j'étire la form (de l'intérieur vers l'extérieur) c'est à 97% parfait.
En revanche y a souci pour l'inverse... La souris à tendance à beaucoup partir à l'extérieur du bouton et c'est un peu bizarre.

T'aurais pas une autre solution ?

Euh.. J'abuse un peu la non ?

<-- St@iLeR -->
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
22 juil. 2004 à 18:08
ah bon
Moi ça marche sans probleme (sauf quand le form devient plus petit que le bouton mais là c'est un peu normal)

Mais comme je l'ai dit mon bouton "redim" est en Anchor en bas à droite du form (Bottom, Right), il reste donc toujours à égale distance du coin inférieur droit de la fenetre
ainsi il suis le mouvement et le curseur est toujours au dessus

Ce que j'ai du mal à m'imaginer c'est pourquoi tu dois faire ça avec un bouton au lieu du redimensionnement normal des Form

Cocoricoooooooo !!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
22 juil. 2004 à 20:13
Effectivement,

je viens de le faire sous visual studio 2003 et ca fonctionne impec. Le .exe également fonctionne très bien.

En revanche sous SharpDevelop j'ai eu ce bug étrange...

Alors pourquoi cette question ?

Tout simplement parce que je suis en train de mettre en place un composant qui va complètement "skinner" ma fenêtre et apporter diverses fonctions utiles en plus.
Donc dès qu'on mettra cet UserControl sur la form, cette dernière aura une bordure paramétrée à None. Ce qui veut dire : plus de boite de controle et surtout plus de bordure de redimensionnement... vala.

<-- St@iLeR -->
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
22 juil. 2004 à 21:23
ah ok
je vais essayer sous sharpdev pour voir

Cocoricoooooooo !!!!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
22 juil. 2004 à 21:28
ba j'ai essayer le code avec la Fidalgo RC2 et pas de probleme

Cocoricoooooooo !!!!
0
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
22 juil. 2004 à 22:12
Ok,

Donc le problème a été résolu en enlevant la couleur de transparence mise par erreur.

Bon de toute manière ton code marche impec. Je vais juste le modifier pour que l'écran ne s'actualise qu'au laché de la souris. Ca évitera les problèmes de rafraichissement ou de scintillement.

Je pense que je sur le clic un rectangle apparaitra et c'est lui qui se redimensionnera, et au laché il disparait et la fenêtre s'actualise.

Merci beaucoup pour ton aide.

<-- St@iLeR -->
0
Rejoignez-nous