Ro3034
Messages postés4Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention29 janvier 2007
-
26 déc. 2006 à 03:34
Ro3034
Messages postés4Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention29 janvier 2007
-
29 janv. 2007 à 07:50
Bonjour,
Mon application ajoute des boutons sur un Winforms sous cette forme:
but1 but2 but3
but0
but4 but5 but6
but0 est le bouton central de mon appli et quand je clique dessus il ne se passe rien. Par contre si je clique sur les autres boutons je vais remplacer le contenu de but0 par celui du bouton cliqué (but1 par exemple). Pour faire ça, je change la location de mes boutons avec un btns[n].Location = new System.Drawing.Point(X,Y) par ex en ayant défini juste avant X et Y.
Mais si mon appli marche très bien en plein écran, dès que je réduit ou bouge ma fenêtre rien nen va plus.
Je pense que ça vient du fait que mes boutons ne sont pas bien ajoutés à une zone cliente et donc que la location de mes boutons est référencée par rapport aux coordonnées de l'écran. Du coup j'ai essayé d'y remédier. J'ai ajouté une zone cliente de la taille de mon écran et à chaque fois que j'utilise la location de mes boutons j'ai ajouté derrière un PointToClient.
Seulement, ça ne marche toujours pas.
C'est sans doutes tout bête mais si vous avez une idée je suis preneur. Je pense être dans le bon avec mon histoire de référenciel mais je n'utilise peut-être pas la bonne fonction au bon endroit.
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 26 déc. 2006 à 10:26
Bonjour,
je ne suis pas sur que la solution que tu essayes de mettre en place soit la bonne.
Moi, je ferais ainsi :
Les boutons but1 à but6 sont tous reliés au même handler (butX_Click). Dans cet évènement, tu modifies les propriétés de but0 en rapport avec le bouton précédement cliquer.
ex:
protected void butX_Click(object sender, EventArgs e) {
Button b = sender as Button;
Ro3034
Messages postés4Date d'inscriptionlundi 8 mars 2004StatutMembreDernière intervention29 janvier 2007 29 janv. 2007 à 07:50
J'ai adopté une autre solution. J'ai une liste d'objet qui correspond à mes boutons (btns), je l'associe à la liste Controls (liste des controls par défaut). Quand je veux ajouter des boutons je les ajoute aux deux listes l'une après l'autre en ayant vider ma liste Controls au préalable.
this.Controls.Clear();
btns.Clear();
//modif de ma liste btns etc....
for (int n = 0; n < btns.Count; n++)
{
this.Controls.Add(btns[n]);
}
Au lieu de faire un new btns[i].Location, je fais désormais :
btns[i].Left = X;
btns[i].Top = Y;
Malheureusement, j'ai toujours le même problème. Quand je réduis ma fenêtre, que je la déplace, ou si je fais glisser une fenêtre au dessus, mon programme va mal fonctionner pour un petit moment.
Au premier clic sur un de mes boutons, au lieu d'avoir le fonctionnement normal ça fait n'importe quoi. Au deuxième clic, on reprend un fonctionnement normal.