[C#] heritage

zebulix131 Messages postés 10 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 14 mars 2004 - 22 janv. 2004 à 18:18
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 19 sept. 2006 à 13:43
bonsoir a tous

pourriez vous m'indiquer ou puis je trouver un exemple simple d'une fenetre qui herite d'une autre . Exemple l'image principale avec 2 boutons et pouvoir reutiliser cette fenetre dans certains cas mais en y ajoutant d'autres boutons
Merci pour votre aide
je cherche sur les forums mais je ne trouve pas d'exemple simple sur l'Heritage

merci pour votre aide

zebulix13

11 réponses

cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
23 janv. 2004 à 05:35
Bonjour,
le travail de dérivation est assez simple :

1) Création du Projet avec une fenêtre :
Crée un projet Windows de classe principale Form1
Ajoute au projet une Form FrmBase
place des contrôles dans cette form :
exemple un label "Base" et un bouton Fermer
this.Close();
crée un champ privé de type FrmBase dans Form1
private FrmBase frm1 = new FrmBase();
Ajoute un menu avec deux options : op1 et op2
Ajoute sur op1 le gestionnaire de message suivant :
frm1.ShowDialog();
Compile et teste

2) Ajout de la fenêtre dérivée
Ajoute au projet (par le menu ajouter un formulaire hérité) une Form "FrmDerivee" en choisissant FrmBase comme modèle
ajoute lui des contrôles : une image par exemple
crée un champ privé de type FrmBase dans Form1
private FrmDerivee frm2 = new FrmDerivee();
Ajoute sur l'option de menu op2 le gestionnaire de message suivant :
frm2.ShowDialog();
Compile et teste

Voila, la fenêtre FrmDerivee hérite des contrôles de FrmBase ainsi que de ces gestionnaires de messages
Pour pouvoir manipuler le label de FrmBase à partir de FrmDerivee, il suffit de modifier son modificateur "private" en "protected" lors de sa déclaration
On pourra alors modifier le libellé en "Derivee" dans FrmDerivee_Load
label1.Text = "Dérivée";
0
zebulix131 Messages postés 10 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 14 mars 2004
23 janv. 2004 à 12:57
merci a vieuxllion pour l'info
je vais essayer de ce pas

merci
0
zebulix131 Messages postés 10 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 14 mars 2004
24 janv. 2004 à 14:13
j'ai suivi le modele a la lettre mais il y a une declaration que je ne sais pas ou mettre dans mon code :
champ prive ..... private FrnBase frm1 = new FrmBase();
merci pour votre aide
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
24 janv. 2004 à 15:16
bonjour zebulix131,

un champ s'ajoute toujours dans le bloc de la classe,
hors des blocs de méthodes

exemple :
public class Form1 : System.Windows.Forms.Form
{
private FrnBase frm1 = new FrmBase();
private FrmDerivee frm2 = new FrmDerivee();
// ici les méthodes
}

bon courage pour la suite
0

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

Posez votre question
zebulix131 Messages postés 10 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 14 mars 2004
25 janv. 2004 à 09:31
ca fonctionne mais ma winform principale reste ouverte margres que je Close() sur ma fenetre heritee
je recherche une personne qui aurait l'amabilite de jeter un oeil sur mon source ??
merci d'avance
envoyer moi un message afin que je vous fasse parvenir mes bourdes de debutant

merci a tous
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
25 janv. 2004 à 09:58
oui,

la fenêtre que tu ouvre est une fenêtre secondaire
pour fermer l'application tu peux utiliser
Application.Exit();

ceci dit, il vaudrait mieux
- ouvrir la fenêtre secondaire en modeless, c'est à dire utiliser
frm.Show() au lieu de frm.ShowDialog()
- et peut être cacher la fenêtre principale si tu n'en a plus besoin : this.Hide() sur la ligne suivant le frm.Show()
0
zebulix131 Messages postés 10 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 14 mars 2004
25 janv. 2004 à 13:36
En fait :
1 j'ai cree une winform que j'ai nomme FrmRando
ne contient rien

2 j'ai cree une winform que j'ai nomme FrmPassword
qui contient un Label et un bouton Valider et un autre bouton Quitter
3 j'ai cree un heritage de FrmPassword que j'ai nomme FrmPasswordBis et qui contient en plus un bouton Modifier

Lorsque je lance mon applic il s'affiche bien ma fenetre herite qui se nomme FrmPasswordBis mais lorque je fait Close() ou Application .Exit() ca ferme bien la fenetre FrmPasswordBis mais la fenetre principale reste toujours active et visible malgre le hide()

en fait je voudrais que quelque soit la fenetre ouverte le fait de cliquer sur le bouton QUITER me ferme mon application.
Peu etre que mon bouton Quiter ne devrait pas etre sur la fenetre FrmPassword?

De plus suis-je oblige de passer par une fenetre principale?

En fait je desire faire une gestion de login et password puis le rendre independant dll ou autre afin que lorsque je desire utiliser ce module dans un programme je puisse m'en servir d'outils et des que je clique sur le bouton valider il verifi si le mot de passe est correct et lance a son tour un autre module

merci encore de votre aide
0
zebulix131 Messages postés 10 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 14 mars 2004
25 janv. 2004 à 13:59
c'est ok Pour application Exit c'est ma faute je l'avait mal placer et maintenant ca ferme mon explication

merciiiiii

j'abuse une autre petite question
dans ma fenetre FrmPassword j'ai cache(visible false) un label et un texbox mais lorsque j'apelle ma fenetre FrmPasswordBis qui s'affiche en appuyant sur le bouton modifier comment rendre a nouveau visible ce label et ce texbox qui se trouvent sur ma fenetre herite(FrmPassword) ???

merci encore
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
25 janv. 2004 à 17:07
salut;

je vois que tu progresse bien

pour ta dernière question : relis les réponses ci dessus
tu y verra :
Pour pouvoir manipuler le label de FrmBase à partir de FrmDerivee, il suffit de modifier son modificateur "private" en "protected" lors de sa déclaration
On pourra alors modifier le libellé en "Derivee" dans FrmDerivee_Load
label1.Text = "Dérivée";

le modificateur "protected" donne l'accès aux classes dérivées
0
zebulix131 Messages postés 10 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 14 mars 2004
25 janv. 2004 à 19:17
c'est bon parfait ca fonctionne

Vieux Lien je te remercie infiniement pour ton aide qui m'a vraiment reconforte. Car en debutant et pouvoir etre aide de la sorte ca encourage a aller plus loin.

a bientot

merci encore
0
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 2
19 sept. 2006 à 13:43
bonjour,
j'ai une question egalement au sujet de l'heritage.
Je veux faire un form parent afin de ne pas avoir a refaire un tas de choses que mes formulaires fils auront en commun (genre des cadres:groupbox et des boutons)
par contre quand j'ajoute des controles ds les formulaires et ben ca fonctionne pas tres bien lors d ela recompilation les objets se placent n'importe ou (enfin pas ou je veux) et avec des tailles differentes (dela taille que je lui donne et meme de la taille originale)

un petit exemple je place un groupbox sur un formulaire parent (avec anchor (top,left,bottom,right) pour que lorsque je modifie sa taille les bordures rrestent a egale distance des bords) et en dessous un panel avec des boutons (Ok,annuler).
je crée un formulaire herité de ce premier .Je modifie un peu la taille du formulaire fils
 J'ajoute ds le groupbox un datagridview et d'autres controles textbox , etc....
je recompile...
le panel avec les boutons se retrouve en haut, le groupbox a changé de taille et ses bordures ne sont plus ala distance du bord du formulaire enfin c le bordel quoi

quelqu'un peut-il me dire pkoi et comment faire pour empecher cela?

help
0
Rejoignez-nous