Actulisation/ouverture d'une fenêtre sur PDA en C#

Résolu
diafwl1 Messages postés 52 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 5 août 2008 - 16 mai 2007 à 13:12
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 - 2 juin 2007 à 11:50
Bonjour,
Je suis en trein de faire des tests sur PDA et j'ai un petit problème, je n'arrive pas à afficher une fenêtre par dessous une autre (ou actuliser cette fenêtre) sur le PDA.
j'aimerai tout simplement afficher une fenêtre contenant des bouttons, et losque l'on clic sur l'un deux, une nouvelle fenêtre avec d'autres bouttons apparait.
Malheureusement je n'arrive pas à obtenir la 2nd fenêtre.
Mon code ressemble à sa :

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;


namespace test

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}


private void InitializeComponent()

{

this.Label1 = new System.Windows.Forms.Label();

this.button1 = new System.Windows.Forms.Button();

this.button2 = new System.Windows.Forms.Button();

this.button3 = new System.Windows.Forms.Button();

this.button4 = new System.Windows.Forms.Button();

this.button5 = new System.Windows.Forms.Button();

this.button6 = new System.Windows.Forms.Button();

this.SuspendLayout();

//

// Label1

//

this.Label1.Location = new System.Drawing.Point(3, 0);

this.Label1.Name = "Label1";

this.Label1.Size = new System.Drawing.Size(100, 20);

this.Label1.Text = "Choisir services :";

this.Label1.ParentChanged += new System.EventHandler(this.label1_ParentChanged);

//

// button1

//

this.button1.Location = new System.Drawing.Point(0, 23);

this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(240, 42);

this.button1.TabIndex = 1;

this.button1.Text = "Service 1";

this.button1.Click += new System.EventHandler(this.button1_Click);

//

// button2

//

this.button2.Location = new System.Drawing.Point(0, 71);

this.button2.Name = "button2";

this.button2.Size = new System.Drawing.Size(240, 42);

this.button2.TabIndex = 3;

this.button2.Text = "Service 2";

this.button2.Click += new System.EventHandler(this.button2_Click);


[...]//equivalent pour les autres bouttons


//

// Form1

//

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;

this.ClientSize = new System.Drawing.Size(240, 294);

this.Controls.Add(this.button6);

this.Controls.Add(this.button5);

this.Controls.Add(this.button4);

this.Controls.Add(this.button3);

this.Controls.Add(this.button2);

this.Controls.Add(this.button1);

this.Controls.Add(this.Label1);

this.Name = "Form1";

this.ResumeLayout(false);


}


private void Service1()

{

this.Label11 = new System.Windows.Forms.Label();

this.button11 = new System.Windows.Forms.Button();

this.button12 = new System.Windows.Forms.Button();

this.button13 = new System.Windows.Forms.Button();
this.SuspendLayout();

//

// Label1

//

this.Label11.Location = new System.Drawing.Point(3, 0);

this.Label11.Name = "Label11";

this.Label11.Size = new System.Drawing.Size(100, 20);

this.Label11.Text = "Choisir services :";

//

// button1

//

this.button11.Location = new System.Drawing.Point(0, 23);

this.button11.Name = "button11";

this.button11.Size = new System.Drawing.Size(240, 42);

this.button11.TabIndex = 1;

this.button11.Text = "Service 1.1";

this.button11.Click += new System.EventHandler(this.button1_Click);


[...]//equivalent pour les autre bouttons


//

// Service1

//

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;

this.ClientSize = new System.Drawing.Size(240, 294);

this.Controls.Add(this.button13);

this.Controls.Add(this.button12);

this.Controls.Add(this.button11);

this.Controls.Add(this.Label11);

this.Name = "Service1";

this.ResumeLayout(false);

}

private void button1_Click(object sender, EventArgs e)

{

Service1();

}

}

14 réponses

cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
20 mai 2007 à 22:17
Si il s'agit d'une autre form Service1 devra être déclarée comme une classe
public partial class Service1 : Form

{

public Service1()

{

InitializeComponent();

}

private void InitializeComponent()

{

this.Label11 = new System.Windows.Forms.Label();

this.button11 = new System.Windows.Forms.Button();

this.button12 = new System.Windows.Forms.Button();

this.button13 = new System.Windows.Forms.Button();

this.SuspendLayout();

//

// Label1

//

this.Label11.Location = new System.Drawing.Point(3, 0);

this.Label11.Name = "Label11";

this.Label11.Size = new System.Drawing.Size(100, 20);

this.Label11.Text = "Choisir services :";

//

// button1

//

this.button11.Location = new System.Drawing.Point(0, 23);

this.button11.Name = "button11";

this.button11.Size = new System.Drawing.Size(240, 42);

this.button11.TabIndex = 1;

this.button11.Text = "Service 1.1";

this.button11.Click += new System.EventHandler(this.button1_Click);

[...]//equivalent pour les autre bouttons

//

// Service1

//

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;

this.ClientSize = new System.Drawing.Size(240, 294);

this.Controls.Add(this.button13);

this.Controls.Add(this.button12);

this.Controls.Add(this.button11);

this.Controls.Add(this.Label11);

this.Name = "Service1";

this.ResumeLayout(false);

}

}

Et sous ta form1 tu feras sur button1.click
(en VB.net cela donne)

Dim MyService as Service1
MyService =new Service1
MyService.show

Sinon pouruoi ne pas utiliser un panel

Le savoir ne sert que si il est partagé par tous
3
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
23 mai 2007 à 20:11
Si c'est sur ta nouvelle page, c'est une classe dont avec tous ses contrôles théoriquement accessibles ex Service1.MonLabel.Caption ="Test"
Le Panel est plus simple à géré, puisqu'il dépend de ta form et donc consomme moins de ressources. Il suffit de le masquer ou de l'afficher au besoin..
Le savoir ne sert que si il est partagé par tous
3
Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 1
16 mai 2007 à 14:39
essaye dans service1()

this.show();
0
diafwl1 Messages postés 52 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 5 août 2008
16 mai 2007 à 16:05
je l'ai placé après "this.ResumeLayout(false);" mais rien n'a changé.
Je me demande si service1 ne devrait pas se trouver à l'extérieur de Form1 ?
0

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

Posez votre question
Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 1
17 mai 2007 à 14:10
Service 1 peut être placer dans form1 mais n'utilise pas this car du coup tucible form1.
Si tu veux construire ainsi ton autre form fait plutot un truc dans le style
System.Windows.Forms servive1Form = new System.Windows.Forms();
et ensuite remplace les this par servive1Form
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
20 mai 2007 à 22:18
Je suis plus sur VB.net, mais le plus simple c'est d'ajouter une Form à ton projet.

Le savoir ne sert que si il est partagé par tous
0
diafwl1 Messages postés 52 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 5 août 2008
23 mai 2007 à 19:21
J'avoue que je n'ais pas pensé au panel !
Tu voudrais donc que je crée un panel et dessine les bouttons dessus ?

Merci pour ta solution, elle fonctionne !
Pour lancer le service1, dans le button1_Click, j'ai mis :
Service1 serv1 = new Service1();
serv1.Show();

Par contre je voulais savoir si cette solution ouvrait une nouvelle fenêtre par dessus l'autre ou actualise celle-ci ?
0
diafwl1 Messages postés 52 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 5 août 2008
23 mai 2007 à 19:27
J'ai la réponse, sa ouvre une nouvelle fenêtre !

Que faut-il faire pour que sa actualise la page ?
0
diafwl1 Messages postés 52 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 5 août 2008
23 mai 2007 à 21:37
Voila j'ai mis toute ma form1 dans un Panel sauf un boutton pour éviter de le réafficher à chaque changement de page.

Je suppose que je dois-je faire la même chose du coté de service1, il y aura donc 1 Panel pour chaque fenêtre ?

Il vaut peut etre mieux que je mette un nouveau panel dans la form1 ?

Pour rendre invisible le panel, il faut surment ecrire quelque chose qui ressemble à :

panel1.Visible = False;
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
24 mai 2007 à 19:06
Effectivement, tu peux masquer ton panel de cette manière. Je suis un peu perdu dans ta démarche, mais pourquoi tu n'utilises pas les menus (Barre de menu ou contextuel avec clic prolongé) car à priori ton panel permet d'afficher des options. L'avantage d'un menu c'est qu'il sera moins gourmand en ressources.

Le savoir ne sert que si il est partagé par tous
0
diafwl1 Messages postés 52 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 5 août 2008
24 mai 2007 à 19:16
Tout bêtement parce que je souhaite émuler le comportement d'un téléphone portable, avec toutes ses contraintes, merci encore pour tes réponses.
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
24 mai 2007 à 21:17
Alors deux types de menu'(Panel)
1 par icône(deplacement Haut/Bas/Droite/Gauche) et 1 par liste(deplacement Haut/Bas).
Je créerais un panel gerant 3*3 pictures, sur lequel je gère au gré des action le contenu de ces picturebox
Ensuite 1 panel liste. Tu gères tout ça via un fichier XML pour l'arborescence.Tu crées des forms dédiées uniquement lorsque tu ne pas gérer par les options de déplacement.

Le savoir ne sert que si il est partagé par tous
0
diafwl1 Messages postés 52 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 5 août 2008
2 juin 2007 à 01:53
Justement j'étais en trein de réfléchir à la gestion en XML, je cherche une bonne implémentation.

Pour les panels, c'est pareil, j'essaie de réaliser ton idée depuis le début mais je suis resté sur mes testes.
J'étais parti sur 1 panel par niveau dans l'arborescence mais peut-être que 2 sufiront finalement.
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
2 juin 2007 à 11:50
Si tu bloques n'hésite pas.
J'ai réalisé une appli avec un panel unique et un changement d'icones lors des manipulation utilisateur (action changement de niveau).
Je n'ai pas implémenter via XML, vu que je n'avais que 3 vues. Chaque action sur un bouton définissait différentes manipulations de l'appli sans autres interventions, donc un historique par listbox, ce qui n'est pas ton cas. Mais j'utilisais l'aspect tactile de l'écran alors que toi si j'ai bien compris, tu vas utiliser au maximun , les touches directionnelles et un valider et annuler.

Tiens nous au courant....

Le savoir n'est que le philtre de l'experience
0
Rejoignez-nous