Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
933 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Ouvrir des Form à partir d'un autre Form [resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ouvrir des Form à partir d'un autre Form [resolu]

n°2256165
clubber43
Posté le 20-04-2015 à 11:41:21  profilanswer
 

Bonjour à tous,  
 
Un sujet que je ne maitrise pas encore, est l'utilisation de plusieurs Forms dans un même projet.
 
Je travaille sur un "petit" logiciel de traitement d'image, et j'ai divisé ce programme en plusieurs
Form.cs exemple -> Egal.cs, extract.cs, ... qui correspondent à différents traitements.
Le tout étant dans un même projet.
 
Lorsque je suis sur mon Form principal, je souhaite appeler les traitement en cliquant dans mon menu,  
lmais comment appeler ces Forms?  
Lorsque je mets :  

Code :
  1. private void egalisationHistoToolStripMenuItem_Click(object sender, EventArgs e)
  2.         {
  3.              Form_Egal F1 = new Form_Egal();
  4.             F1.Show();
  5.         }


je ne trouve pas les forms que j'ai créé précédement.
 
J'ai cherché sur les forums et les commandes me crées des erreurs de compils :
 

Code :
  1. Erreur 9 Le type ou le nom d'espace de noms 'Form_Egal' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)


 
Je vous remercie de votre aide...
SI besoin, je peux rep par mp si besoin du projet en entier
 
Merci @ tous
 
@+


Message édité par clubber43 le 23-04-2015 à 20:56:35

---------------
Merci
mood
Publicité
Posté le 20-04-2015 à 11:41:21  profilanswer
 

n°2256171
TotalRecal​l
Posté le 20-04-2015 à 12:24:17  profilanswer
 

Si tu veux contrôler finement les forms que tu ouvres/caches/ferme, tu dois écrire un gestionnaire qui s'occupera pour toi de chaque instance de form que tu crées afin de savoir à quoi elle correspond "fonctionnellement parlant".
Quand tu crées et ouvre "F1" c'est juste une form parmi d'autres.

 

Cependant tu peux voir la liste des forms actives dans une application en itérant sur la collection :
System.Windows.Forms.Application.OpenForms
Pour "reconnaitre" tes forms, avec le type et son titre on peut déjà faire pas mal de choses.
ex d'utilisation : http://www.c-sharpcorner.com/Blogs [...] ation.aspx

 

Ca t'aide ?


Message édité par TotalRecall le 20-04-2015 à 12:26:12

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2256182
clubber43
Posté le 20-04-2015 à 13:11:24  profilanswer
 

C'est deja un début :)
Merci pour ton aide.
 
Je vais y regarder encore un peu, mais du coup les forms que j'ai créés, je ne vais pas pouvoir les utiliser ?
Car sur l'exemple donné, il créé des form à partir de new. form().
 
Je vasi voir ce que je peux faire et je reviendrai si besoin.
 
Merci TotalRecall :)
 
@+


---------------
Merci
n°2256186
TotalRecal​l
Posté le 20-04-2015 à 13:52:57  profilanswer
 

Si si.
Regarde les exemples et relis, tu comprendras certainement.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2256187
clubber43
Posté le 20-04-2015 à 13:57:39  profilanswer
 

OK, je regarde mieux alors  :)
 
MErci


---------------
Merci
n°2256189
clubber43
Posté le 20-04-2015 à 14:08:09  profilanswer
 

juste au cas où, je depose mon mini projet sur dropbox :
https://www.dropbox.com/sh/xk4p7ngn [...] 7K1ba?dl=0
 
Merci bien pour l'aide en tout cas !!
 
@+


---------------
Merci
n°2256190
clubber43
Posté le 20-04-2015 à 14:12:49  profilanswer
 

J'ai refais les manip de l'exemple et mes forms s'ouvrent bien :)
Celles qui sont créées dans le new Form().
Mais lorsque je mets les forms déjà en place, il ne me les trouve pas.
 
En fait, elles ne sont pas "visibles" dans mon form1.cs
 
Je vois pas trop le souci, mais je vais trouver :)
 
j'y retourne lol
 
Merci TotalRecall pour ton aide.
 


---------------
Merci
n°2256311
clubber43
Posté le 21-04-2015 à 21:28:02  profilanswer
 

Et bien, je ne suis pas arrivé à lancer mes Forms...
Je ne vois pas où je me suis trompé
 
Le lien m'a fait  voir comment les créer et les afficher, mais je ne vois pas comment afficher les miennes...
 
SI quelqu'un peut regader mon projet et me dire si j'ai des erreurs..
 
MErci à tous


---------------
Merci
n°2256312
caps lock
Posté le 21-04-2015 à 23:01:28  profilanswer
 

Qu'est ce qu'un namespace ? Je t'invite à te documenter http://www.tutorialspoint.com/csha [...] spaces.htm
 
Le Form de base utilise le namespace "PictureHistogram" alors que les ceux de tes autres forms utilisent "namespace projecV6" ... ce qui fait que ces forms sont invisibles quand tu les recherches.
 
Il te suffit de renommer tes namespace avec même nom et tu pourras facilement faire ce que tu voulais

Code :
  1. Form_Egal F3 = new Form_Egal();
  2. F3.Text = "Egalisation Histogramme";
  3. F3.Show();


Message édité par caps lock le 21-04-2015 à 23:01:57
n°2256319
TotalRecal​l
Posté le 22-04-2015 à 08:57:31  profilanswer
 

Application.OpenForms se moque du namespace non ?
 
Je n'ai pas regardé le projet (pour DL il faut un compte dropbox [:benou]). Partage directement le code pertinent ici, c'est sensé être très court.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
mood
Publicité
Posté le 22-04-2015 à 08:57:31  profilanswer
 

n°2256323
clubber43
Posté le 22-04-2015 à 09:11:57  profilanswer
 

Ok, je le mets en copie asap.
 
Merci pour ton aide


---------------
Merci
n°2256324
TotalRecal​l
Posté le 22-04-2015 à 09:12:46  profilanswer
 

Sinon héberge le autre part, un truc sans compte. Pour un petit fichier comme ça c'est pas le choix qui manque.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2256326
clubber43
Posté le 22-04-2015 à 09:21:42  profilanswer
 

Là, c'est mieux :)
 
Merci


---------------
Merci
n°2256327
clubber43
Posté le 22-04-2015 à 09:21:58  profilanswer
 

C__projet_V6.7z - 514 KB


Message édité par clubber43 le 22-04-2015 à 09:23:07

---------------
Merci
n°2256333
TotalRecal​l
Posté le 22-04-2015 à 10:05:15  profilanswer
 

Je n'ai pas vu la moindre utilisation de OpenForms dans ton code.

 

Si ton but est juste d'ouvrir une form ton code est déjà bon, mais :
- il te manque la référence vers le namespace ou bien la correction de celui-ci, comme disait caps lock,
- dans ton programme je vois que tu mets des Form F1 = new Form(); alors que j'imagine que tu voulais créer des instances de tes forms à toi : Form_Egal et cie.

 

Donc remplace namespace PictureHistogram par namespace Projet_V3 en haut de form1
Et remplace New Form F3 = new Form(); par Form F3 = new Form_Egal(); et cie


Message édité par TotalRecall le 22-04-2015 à 10:14:44

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2256335
clubber43
Posté le 22-04-2015 à 10:08:29  profilanswer
 

OK, je viens de capter.
 
 

Citation :

Le Form de base utilise le namespace "PictureHistogram" alors que les ceux de tes autres forms utilisent "namespace projecV6" ... ce qui fait que ces forms sont invisibles quand tu les recherches.  
 
Il te suffit de renommer tes namespace avec même nom et tu pourras facilement faire ce que tu voulais


 
 
Désolé pour la perte de temps, je viens d'atterrir sur la réponse de CapsLock.
Et je vais modifier de suite.  
 
 

Citation :

- dans ton programme je vois que tu mets des Form F1 = new Form(); alors que j'imagine que tu voulais créer des instances de tes forms à toi : Form_Egal et cie.


 
C'est exactement cela.
Je vais travailler sur le code et je repasse ce soir.


Message édité par clubber43 le 22-04-2015 à 10:15:43

---------------
Merci
n°2256336
TotalRecal​l
Posté le 22-04-2015 à 10:16:25  profilanswer
 

J'ai édité mon message entre temps ci dessus entre temps ça devrait beaucoup t'aider.

 

C'est moi qui n'avait pas compris ta première demande, comme tu parlais "d'accéder aux forms" j'ai proposé Application.OpenForms mais ça n'est pas la réponse, toi tu es à quelque chose de beaucoup plus basique. Je n'avais pas vu que tu avais juste un souci de namespace, je croyais que tu cherchais à manipuler tes instances de fenêtres déjà ouvertes.


Message édité par TotalRecall le 22-04-2015 à 10:17:21

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2256338
clubber43
Posté le 22-04-2015 à 10:19:40  profilanswer
 

Vu que je commence les codes en c#,  
J'avoue être un peu perdu mais c'est vrai que l'édit du message précédent m'a mis de suite sur la route :)
 
Pour les projets assez simples, on peut rester sur ce type d'architecture, avec plusieurs forms et les appeler (comme je le fais)
Mais du coup tu parles des OpenForm, c'est pour els projets plus importants en terme de nombre de ligne de code, fenêtres, ... ?
 
Merci en tout cas et je vais modifier mon code asap.
 
Merci bien


---------------
Merci
n°2256339
TotalRecal​l
Posté le 22-04-2015 à 10:23:02  profilanswer
 

Ben ça dépend en gros de si tes "fenêtres filles" sont autonomes une fois ouvertes ou si tu as besoin parfois de leur envoyer des commande ou de les fermer depuis une autre.
 
Apres pour développer des applis multi fenêtre il y a plein d'approches : MDI, SDI, modale... Je te laisse creuser. Indépendamment du code ça peut déjà t'inspirer sur l'ergonomie.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2256340
clubber43
Posté le 22-04-2015 à 10:24:15  profilanswer
 

ok,  
Merci pour les infos. je vais m'y pencher dessus, c'est assez sympa le c#, assez rapide et facile (quand ça marche lol) à mettre en œuvre :)
 
Merci TotalRecall


---------------
Merci
n°2256342
TotalRecal​l
Posté le 22-04-2015 à 10:38:25  profilanswer
 

Pas de souci !
Si tu veux tailler le bout de gras sur .Net :  
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0  
:D


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2256343
clubber43
Posté le 22-04-2015 à 10:42:19  profilanswer
 

Je suis en congés dans 15 jours donc pourquoi pas en faie un peu :)
 
@+
 
Merci


---------------
Merci
n°2256402
clubber43
Posté le 22-04-2015 à 21:37:53  profilanswer
 

Bon, je me permets de revenir sur le forum, car malgré les réponses que vous m'avais apporté,  
je bug sur le namespace et je vois pas comment je le modifie.
Voila mon code avec les namespace :
 
sur le fichier F_NiveauDG.cs

Code :
  1. using System.Windows.Forms;
  2. using Projet_V3;
  3. using PictureHistogram;
  4. namespace Projet_V3
  5. {
  6.    
  7.     public partial class F_NiveauDG : Form
  8.     {
  9.         public F_NiveauDG()
  10.         {
  11.             InitializeComponent();
  12.         }
  13.         private void Post_NDG_Click(object sender, EventArgs e)


 
et de l'autre coté sur le fichier F_Princip.cs
 

Code :
  1. using System.Windows.Forms.Design;
  2. using Projet_V3;
  3. using PictureHistogram;
  4. namespace PictureHistogram
  5. {
  6.     public partial class Form1 : Form
  7.     {
  8.         public Form1()
  9.         {
  10.             InitializeComponent();
  11.             this.comboBox1.Enabled = false;
  12.             this.comboBox1.SelectedIndex = 0;
  13.         }
  14.                      
  15.         private void quitterToolStripMenuItem_Click(object sender, EventArgs e)


 
En suivant le conseil de caps, je devrai mettre les namespace dans ces fichiers? ou ailleurs?  
 
je vois aps trop comment faire. Car en mettant les namespace, j'ai pas mal d'erreurs...
 
Je suis un peu lourd, mais j'avoue être un peu perdu avec els .cs, designer.cs, ...
 
MErci @ vous


---------------
Merci
n°2256405
caps lock
Posté le 22-04-2015 à 22:10:09  profilanswer
 

Je vois pas où est le problème, en testant ton projet j'avais mis tous les namespaces sur PictureHistogram et c'est passé comme une lettre à la poste

n°2256406
TotalRecal​l
Posté le 22-04-2015 à 22:14:46  profilanswer
 

Mais lis des tutos [:fegafobobos:2]  
Je t'ai déjà donné la solution et caps lock aussi je crois.
 
Pour que les objets se "voient" les uns les autres ils doivent être dans le même namespace, OU inclure chacun les namespaces des trucs qu'ils ont besoin de voir. Un namespace c'est un conteneur commun pour grouper des classes.  
Généralement le nom du namespace reflète le nom du projet et le dossier dans lequel se trouve l'objet, mais ça n'est pas une obligation technique.  
Par exemple dans ton cas pour suivre le nom de ton projet toutes tes forms devraient être dans le namespace "Projet_V3".
 
Donc :  
- Soit tu mets tout le monde dans le même namespace en changeant "namespace PictureHistogram" par "namespace Projet_V3" en haut de chaque classe ou c'est nécessaire.
- Soit tu mets un using namespace PictureHistogram; en haut de chaque form qui a besoin de voir une form qui est dans PictureHistogram alors qu'elle est elle même dans autre chose.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2256426
clubber43
Posté le 23-04-2015 à 09:13:07  profilanswer
 

Ok,  
Car lorsque j'ai changé les namespace dans le projet, il ne reconnaissait plus les fonctions du F_Principale qui avait le namespace différent des autres.
Du coup, je change tous mes namespace par namespace PictureHistogram et les using et le script tournera du coup.
 
Je vous dirais cela ce soir car je suis en déplacement ce matin.
 
Merci encore :)


---------------
Merci
n°2256445
TotalRecal​l
Posté le 23-04-2015 à 12:08:41  profilanswer
 

C'est pas encore tout à fait ça l'idée mais d'ici ce soir en relisant ça ira sans doute mieux :whistle:


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2256452
clubber43
Posté le 23-04-2015 à 12:56:01  profilanswer
 

ok :)
Merci @+


---------------
Merci
n°2256508
clubber43
Posté le 23-04-2015 à 20:55:49  profilanswer
 

Et bien voilà,  
après relecture et comprehension des tuto, je suis arrivé :)
 
Merci à tous les 2 pour votre aide!!
 


---------------
Merci
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Ouvrir des Form à partir d'un autre Form [resolu]

 

Sujets relatifs
Faire base de données(prix) à partir site d'un webFaire base de données à partir site d'un web public
Appel d'une autre page a partir d'une page HTML ou PHP[Powershell] Recherche fichier à partir d'un csv
TRI TABLEAU à partir liste déroulanteouvrir un fichier texte en java
Mon lien ne s'ouvre que quand je clique ouvrir dans un nouvel ongletTrouver le numéro d'un lecteur à partir de sa lettre
Ouvrir etat pour une semaine donnee a partir d'une date entree formProbleme en C#: Ouvrir une Form a partir d'un bouton d'une autre Form
Plus de sujets relatifs à : Ouvrir des Form à partir d'un autre Form [resolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR