Csharp/C Sharp/GUI Windows Form/Layout

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Layout Manager

<source lang="csharp"> /* User Interfaces in C#: Windows Forms and Custom Controls by Matthew MacDonald Publisher: Apress ISBN: 1590590457

  • /

using System; using System.Drawing; using System.Collections; using System.ruponentModel; using System.Windows.Forms; using System.Data; namespace LayoutManager {

   /// <summary>
   /// Summary description for LayoutManager.
   /// </summary>
   public class LayoutManager : System.Windows.Forms.Form
   {
       internal System.Windows.Forms.TabControl tabControl1;
       internal System.Windows.Forms.TabPage tabPage1;
       internal System.Windows.Forms.TabPage tabPage2;
       /// <summary>
       /// Required designer variable.
       /// </summary>
       private System.ruponentModel.Container components = null;
       public LayoutManager()
       {
           //
           // Required for Windows Form Designer support
           //
           InitializeComponent();
           //
           // TODO: Add any constructor code after InitializeComponent call
           //
       }
       /// <summary>
       /// Clean up any resources being used.
       /// </summary>
       protected override void Dispose( bool disposing )
       {
           if( disposing )
           {
               if (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.tabControl1 = new System.Windows.Forms.TabControl();
           this.tabPage1 = new System.Windows.Forms.TabPage();
           this.tabPage2 = new System.Windows.Forms.TabPage();
           this.tabControl1.SuspendLayout();
           this.SuspendLayout();
           // 
           // tabControl1
           // 
           this.tabControl1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
               | System.Windows.Forms.AnchorStyles.Left) 
               | System.Windows.Forms.AnchorStyles.Right);
           this.tabControl1.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                     this.tabPage1,
                                                                                     this.tabPage2});
           this.tabControl1.Location = new System.Drawing.Point(6, 3);
           this.tabControl1.Name = "tabControl1";
           this.tabControl1.SelectedIndex = 0;
           this.tabControl1.Size = new System.Drawing.Size(280, 260);
           this.tabControl1.TabIndex = 1;
           // 
           // tabPage1
           // 
           this.tabPage1.Location = new System.Drawing.Point(4, 22);
           this.tabPage1.Name = "tabPage1";
           this.tabPage1.Size = new System.Drawing.Size(272, 234);
           this.tabPage1.TabIndex = 0;
           this.tabPage1.Text = "TabPage1";
           // 
           // tabPage2
           // 
           this.tabPage2.Location = new System.Drawing.Point(4, 22);
           this.tabPage2.Name = "tabPage2";
           this.tabPage2.Size = new System.Drawing.Size(272, 234);
           this.tabPage2.TabIndex = 1;
           this.tabPage2.Text = "TabPage2";
           this.tabPage2.Visible = false;
           // 
           // LayoutManager
           // 
           this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
           this.ClientSize = new System.Drawing.Size(292, 266);
           this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                         this.tabControl1});
           this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
           this.Name = "LayoutManager";
           this.Text = "LayoutManager";
           this.Load += new System.EventHandler(this.LayoutManager_Load);
           this.tabControl1.ResumeLayout(false);
           this.ResumeLayout(false);
       }
       #endregion
       /// <summary>
       /// The main entry point for the application.
       /// </summary>
       [STAThread]
       static void Main() 
       {
           Application.Run(new LayoutManager());
       }
       private void LayoutManager_Load(object sender, System.EventArgs e)
       {
           // Create and attach the layout manager.
           SingleLineFlow layoutManager = new SingleLineFlow(tabPage1, 20);
           // Add 10 sample checkboxes.
           CheckBox chkbox;
           for (int i = 1; i < 11; i++)
           {
               chkbox = new CheckBox();
               chkbox.Text = "Setting " + i.ToString();
               tabPage1.Controls.Add(chkbox);
           }
       }
   }
   public class SingleLineFlow
   {
       private Control container;
       private int margin;
       public SingleLineFlow(Control parent, int margin)
       {
           this.container = parent;
           this.margin = margin;
           // Attach the event handler.
           container.Layout += new LayoutEventHandler(UpdateLayout);
           // Refresh the layout.
           UpdateLayout(this, null);
       }
       public int Margin
       {
           get
           {
               return margin;
           }
           set
           {
               margin = value;
           }
       }
       // This is public so it can be triggered manually if needed.
       public void UpdateLayout(object sender,
           System.Windows.Forms.LayoutEventArgs e)
       {
           int y = 0;
           foreach (Control ctrl in container.Controls)
           {
               y += Margin;
               ctrl.Left = Margin;
               ctrl.Top = y;
               ctrl.Width = container.Width;
               ctrl.Height = Margin;
           }
       }
   }

}


      </source>