2011-04-28 6 views
2

Quelqu'un peut-il m'aider à comprendre l'anatomie d'un Windows Form (.net)? Lorsque je crée un nouveau Windows Form à partir de mon application .NET, je peux voir dans la classe designer une quantité de code de base générée par le studio. Je viens de copier collé ci-dessous..NET Windows Forms Anatomie

namespace FormBasic 
{ 
    partial class Form1 
    { 
     /// <summary> 
     /// Required designer variable. 
     /// </summary> 
     private System.ComponentModel.IContainer components = null; 

     /// <summary> 
     /// Clean up any resources being used. 
     /// </summary> 
     /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
     protected override void Dispose(bool disposing) 
     { 
      if (disposing && (components != null)) 
      { 
       components.Dispose(); 
      } 
      base.Dispose(disposing); 
     } 

     #region Windows Form Designer generated code 

     /// <summary> 
     /// Required method for Designer support - do not modify 
     /// the contents of this method with the code editor. 
     /// </summary> 
     private void InitializeComponent() 
     { 
      this.SuspendLayout(); 
      // 
      // Form1 
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
      this.ClientSize = new System.Drawing.Size(292, 266); 
      this.Name = "Form1"; 
      this.Text = "Form1"; 
      this.ResumeLayout(false); 

     } 
     #endregion 
    } 
} 

d'eux ce que j'ai trouvé intéressant était cette ligne de code

private System.ComponentModel.IContainer components = null; 

Qu'est-ce que ce conteneur? J'ai débogué en plaçant un point d'arrêt dans la fonction InitializeComponent. Les components restent null.

La hiérarchie de la classe Form est également la classe Form Hérite de la classe ContainerControl. Pouvez-vous s'il vous plaît m'aider à effacer ces terminologies?

+0

Laisser un contrôle sur la page, encore une fois debug courir et voir ce qui se passe :) – DaveRead

+0

je l'ai fait. Des modifications mineures se produisent dans le code du concepteur pour s'adapter au contrôle nouvellement ajouté. Mais toujours les composants restent nuls. – Nishant

+0

Demandez-vous parce que vous voulez être en mesure de faire quelque chose en particulier, ou êtes-vous simplement curieux de savoir comment fonctionne le code du concepteur? – siride

Répondre

4

Le champ components est un conteneur pour les composants non visuels (comme OpenFileDialog, ErrorProvider, FileSystemWatcher ...). Il est seulement initialisé si vous avez de tels composants sur votre formulaire. C'est un moyen de s'assurer que ces composants sont éliminés lorsque le formulaire est éliminé.

+0

Ok. c'était la prise. NON-VISUEL !!!! Merci. Mais y at-il quelque chose de plus que vous pouvez ajouter ou fournir un lien pour moi de comprendre plus sur les formulaires Windows. – Nishant

+0

@Nishant, [cette page] (http://msdn.microsoft.com/fr-fr/library/cc656767.aspx) ressemble à un bon point de départ –

1

La ligne private System.ComponentModel.IContainer components = null; facilite la gestion d'éléments tels que Timer ou BackgroundWorker dans la section "Composants" de la boîte à outils. Dans l'éditeur, ils apparaissent comme ceci:

enter image description here

Questions connexes