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é
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
class SelectModifConfig2 : Form
- Le compilateur 'life' souligne en rouge ondulé
- - "splitContainer_SMC_Panel2_Paint" dans
Code : Sélectionner tout - Visualiser dans une fenêtre à part
this.splitContainer_SMC.Panel2.Paint += new PaintEventHandler(this.splitContainer_SMC_Panel2_Paint);
- - "treeView_SMC_AfterSelect" dans
Code : Sélectionner tout - Visualiser dans une fenêtre à part
this.treeView_SMC.AfterSelect += new TreeViewEventHandler(this.treeView_SMC_AfterSelect);
- J'ai dû ajouter les déclarations de data members suivantes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.