2011-06-27 1 views
0

Je suis novice dans le domaine de l'interface utilisateur .NET et je viens d'un environnement avec la programmation de l'interface utilisateur de tk, donc j'essaie de trouver des façons de faire correspondantes. Peut-être que .NET a un moyen d'atteindre le même résultat que je ne connais pas..NET winforms options de pack de contrôles personnalisés

Donc ce que j'essaie de faire est illustré grossièrement dans l'image 1.

Nous avons une section d'en-tête, une section de corps et une section de pied de page. Ils ont chacun un certain nombre de contrôles en eux. Ce que j'essaie de trouver est un moyen pour moi de laisser chaque section d'en-tête et chaque section de pied prendre une certaine hauteur et s'étirer horizontalement; Laissez la section du corps s'étirer pour remplir le reste. Y a-t-il un moyen de faire cela sans avoir besoin de calculer la position du point et de simplement dire "pack tête vers le haut, le pied vers le bas et mettre le corps entre"

Répondre

1

Contrôle supérieur - Ancrage: Gauche, Droite, Haut.
MiddleControl - Ancrage: Gauche, Droite, Haut, Bas. Bas de contrôle - Ancre: Gauche, Droite, Bas.

namespace ChartApp 
{ 
    partial class Form2 
    { 
     /// <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.panel1 = new System.Windows.Forms.Panel(); 
      this.panel2 = new System.Windows.Forms.Panel(); 
      this.panel3 = new System.Windows.Forms.Panel(); 
      this.SuspendLayout(); 
      // 
      // panel1 
      // 
      this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
      | System.Windows.Forms.AnchorStyles.Left) 
      | System.Windows.Forms.AnchorStyles.Right))); 
      this.panel1.BackColor = System.Drawing.Color.Maroon; 
      this.panel1.Location = new System.Drawing.Point(0, 87); 
      this.panel1.Name = "panel1"; 
      this.panel1.Size = new System.Drawing.Size(599, 266); 
      this.panel1.TabIndex = 0; 
      // 
      // panel2 
      // 
      this.panel2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
      | System.Windows.Forms.AnchorStyles.Right))); 
      this.panel2.BackColor = System.Drawing.Color.Coral; 
      this.panel2.Location = new System.Drawing.Point(0, 353); 
      this.panel2.Name = "panel2"; 
      this.panel2.Size = new System.Drawing.Size(599, 86); 
      this.panel2.TabIndex = 1; 
      // 
      // panel3 
      // 
      this.panel3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
      | System.Windows.Forms.AnchorStyles.Right))); 
      this.panel3.BackColor = System.Drawing.SystemColors.ActiveCaption; 
      this.panel3.Location = new System.Drawing.Point(0, 0); 
      this.panel3.Name = "panel3"; 
      this.panel3.Size = new System.Drawing.Size(600, 86); 
      this.panel3.TabIndex = 2; 
      // 
      // Form2 
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
      this.ClientSize = new System.Drawing.Size(600, 439); 
      this.Controls.Add(this.panel3); 
      this.Controls.Add(this.panel2); 
      this.Controls.Add(this.panel1); 
      this.Name = "Form2"; 
      this.Text = "Form2"; 
      this.ResumeLayout(false); 

     } 

     #endregion 

     private System.Windows.Forms.Panel panel1; 
     private System.Windows.Forms.Panel panel2; 
     private System.Windows.Forms.Panel panel3; 
    } 
} 
+0

Merci. Cela marche. Le travail supplémentaire que j'essayais aussi de faire est de devoir spécifier manuellement les emplacements et les tailles du panneau parce que dans notre application ils sont adaptés à chaque contrôle. Ainsi, par exemple, l'appelant passerait dans trois panneaux et cette classe les organiserait. Mais je suppose que je peux interroger la hauteur de l'en-tête et pied de page et réaliser la même chose. – dln

+0

Oui, l'ancrage fait l'affaire. Même si vous modifiez la taille @runtime, l'en-tête, le pied de page et le corps doivent être redimensionnés. –

Questions connexes