Bonjour.
Je suis nouveau en C#, venant de C++ et Java.
J'emploie Microsoft Visual C# 2008 Express Ed. et son "Look&Feel" pour définir un premier 'Windows Form' :
Un form contenant un SplitContainer dont
- le panneau de gauche reçoit un TreeView
- le panneau de droite reçoit un tableau + quelques 'Buttons'.
J'observe qu'il se construit automatiquement
- Un répertoire p.ex. intitulé "SelectModifConfig.cs" ([design]) et sous lui :
- Un fichier "SelectModifConfig.Designer.cs"
- Un autre fichier "SelectModifConfig.resx"
Et le User Interface apparaît convenablement à l'écran, en cliquant sur le répertoire "SelectModifConfig.cs".
2e étape : Je veux deux classes à part pour la définition du contenu du TreeView ainsi que du tableau, car ces deux classes devront se compliquer et fort grandir. En commençant par le TreeView :
- Le constructeur de ma nouvelle classe 'SelModConf_TreeView.cs' réfère vers une fonction 'InitializeComponent()' qui définit tous les (sous-)noeuds de l'arbre.
- J'ai ôté de la classe originale "SelectModifConfig.Designer.cs" toutes les commandes propres à TreeView et y ai substitué
this.treeView_SMC = new JctUiPlugin.SelModConf_TreeView();
Et le produit généré automatiquement par Look&Feel fonctionne bien, le TreeView y compris ... jusqu'au moment où je clique sur le TreeView, dans le formulaire du Look&Feel. A ce moment, le constructeur de code automatique recode tout le TreeView dans le fichier d'origine "SelectModifConfig.Designer.cs". La poisse.
Q1: Comment maintenir une définition d'un élément (TreeView, tableau ...) dans une classe à part ?
3e étape : Je décidai donc de créer manuellement le fichier principal du User Interface : "SelectModifConfig2.cs". Mais d'autres problèmes apparaissent :
- J'ai dû ajouter ": Form" pour que Dispose(), SuspendLayout et ResumeLayout soient reconnus par le compilateur "life" :
class SelectModifConfig2 : Form
- Le compilateur 'life' souligne en rouge ondulé
- - "splitContainer_SMC_Panel2_Paint" dans
this.splitContainer_SMC.Panel2.Paint += new PaintEventHandler(this.splitContainer_SMC_Panel2_Paint);
- - "treeView_SMC_AfterSelect" dans
this.treeView_SMC.AfterSelect += new TreeViewEventHandler(this.treeView_SMC_AfterSelect);
- J'ai dû ajouter les déclarations de data members suivantes
1 2 3 4 5 6
| private SizeF autoScaleDimensions;
private AutoScaleMode autoScaleMode;
private Size clientSize;
private Control controls; // Control ?
private String name;
private String text; |
, ce que le "SelectModifConfig.Designer.cs" généré par Look&Feel ne fait pas.
- Le compilateur 'life' souligne en rouge ondulé 'Add' dans
this.controls.Add(this.splitContainer_SMC);
Q2: De quelle classe est en fait 'controls' ?
Q3: Pourquoi toutes ces rajoutes sont-elles nécessaires ?
Que manquerait-il dans ma classe "manuelle" "SelectModifConfig2.cs" ?
Q4: Quel tutoriel lire, bien fait concernant les 'User Interfaces' faits manuellement en C# ?
Il me semble que ma démarche et mes questions sont celles de bon nombre de débutants.
Merci au cas où vous y répondriez.
Partager