Csharp/C Sharp by API/System.Windows.Forms/Panel — различия между версиями

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

Текущая версия на 12:09, 26 мая 2010

extends Panel

 
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
public class ScrollingText : System.Windows.Forms.Panel {
    Font textFont = new Font("Times New Roman", 24);
    public ScrollingText() {
        InitializeComponent();
    }
    private void ScrollingText_Paint(object sender, PaintEventArgs e) {
        Graphics g = e.Graphics;
        g.TranslateTransform(this.AutoScrollPosition.X, this.AutoScrollPosition.Y);
        g.DrawString("Hello, World", textFont, Brushes.Black, 40, 40);
        g.DrawString("Hello, World", textFont, Brushes.Red, 40, 240);
        g.DrawString("Hello, World", textFont, Brushes.Blue, 350, 40);
        g.DrawString("Hello, World", textFont, Brushes.Green, 350, 240);
    }
    private void InitializeComponent() {
        this.SuspendLayout();
        this.AutoScroll = true;
        this.AutoScrollMinSize = new System.Drawing.Size(600, 400);
        this.BackColor = System.Drawing.SystemColors.Window;
        this.Paint += new System.Windows.Forms.PaintEventHandler(this.ScrollingText_Paint);
        this.ResumeLayout(false);
    }
}
public class Form1 : Form {
    public Form1() {
        InitializeComponent();
    }
    private void InitializeComponent() {
        this.scrollingText1 = new ScrollingText();
        this.SuspendLayout();
        this.scrollingText1.AutoScroll = true;
        this.scrollingText1.AutoScrollMinSize = new System.Drawing.Size(600, 400);
        this.scrollingText1.BackColor = System.Drawing.SystemColors.Window;
        this.scrollingText1.Location = new System.Drawing.Point(13, 13);
        this.scrollingText1.Size = new System.Drawing.Size(267, 243);
        this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(292, 268);
        this.Controls.Add(this.scrollingText1);
        this.ResumeLayout(false);
    }
    private ScrollingText scrollingText1;
    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }
}


new Panel()

  
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;
class ClipViewAll : Form {
    Panel panelDisplay, panelButtons;
    RadioButton radioChecked;
    string[] astrFormatsSave = new string[0];
    public static void Main() {
        Application.Run(new ClipViewAll());
    }
    public ClipViewAll() {
        panelDisplay = new Panel();
        panelDisplay.Parent = this;
        panelDisplay.Dock = DockStyle.Fill;
        panelDisplay.Paint += new PaintEventHandler(PanelOnPaint);
        panelDisplay.BorderStyle = BorderStyle.Fixed3D;
        Splitter split = new Splitter();
        split.Parent = this;
        split.Dock = DockStyle.Left;
        panelButtons = new Panel();
        panelButtons.Parent = this;
        panelButtons.Dock = DockStyle.Left;
        panelButtons.AutoScroll = true;
        panelButtons.Width = Width / 2;
        Timer timer = new Timer();
        timer.Interval = 1000;
        timer.Tick += new EventHandler(TimerOnTick);
        timer.Enabled = true;
    }
    void TimerOnTick(object obj, EventArgs ea) {
        IDataObject data = Clipboard.GetDataObject();
        string[] astrFormats = data.GetFormats();
        bool bUpdate = false;
        if (astrFormats.Length != astrFormatsSave.Length)
            bUpdate = true;
        else {
            for (int i = 0; i < astrFormats.Length; i++)
                if (astrFormats[i] != astrFormatsSave[i]) {
                    bUpdate = true;
                    break;
                }
        }
        panelDisplay.Invalidate();
        if (!bUpdate)
            return;
        astrFormatsSave = astrFormats;
        panelButtons.Controls.Clear();
        Graphics grfx = CreateGraphics();
        EventHandler eh = new EventHandler(RadioButtonOnClick);
        int cxText = AutoScaleBaseSize.Width;
        int cyText = AutoScaleBaseSize.Height;
        for (int i = 0; i < astrFormats.Length; i++) {
            RadioButton radio = new RadioButton();
            radio.Parent = panelButtons;
            radio.Text = astrFormats[i];
            if (!data.GetDataPresent(astrFormats[i], false))
                radio.Text += "*";
            try {
                object objClip = data.GetData(astrFormats[i]);
                radio.Text += " (" + objClip.GetType() + ")";
            } catch {
                radio.Text += " (Exception on GetData or GetType!)";
            }
            radio.Tag = astrFormats[i];
            radio.Location = new Point(cxText, i * 3 * cyText / 2);
            radio.Size = new Size((radio.Text.Length + 20) * cxText,
                                  3 * cyText / 2);
            radio.Click += eh;
        }
        grfx.Dispose();
        radioChecked = null;
    }
    void RadioButtonOnClick(object obj, EventArgs ea) {
        radioChecked = (RadioButton)obj;
        panelDisplay.Invalidate();
    }
    void PanelOnPaint(object obj, PaintEventArgs pea) {
        Panel panel = (Panel)obj;
        Graphics grfx = pea.Graphics;
        Brush brush = new SolidBrush(panel.ForeColor);
        if (radioChecked == null)
            return;
        IDataObject data = Clipboard.GetDataObject();
        object objClip = data.GetData((string)radioChecked.Tag);
        if (objClip == null)
            return;
        else if (objClip.GetType() == typeof(string)) {
            grfx.DrawString((string)objClip, Font, brush,
                            panel.ClientRectangle);
        } else if (objClip.GetType() == typeof(string[]))   // FileDrop
          {
            string str = string.Join("\r\n", (string[])objClip);
            grfx.DrawString(str, Font, brush, panel.ClientRectangle);
        } else if (objClip.GetType() == typeof(Bitmap) ||
                   objClip.GetType() == typeof(Metafile) ||
                   objClip.GetType() == typeof(Image)) {
            grfx.DrawImage((Image)objClip, 0, 0);
        } else if (objClip.GetType() == typeof(MemoryStream)) {
            Stream stream = (Stream)objClip;
            byte[] abyBuffer = new byte[16];
            long lAddress = 0;
            int iCount;
            Font font = new Font(FontFamily.GenericMonospace,
                                   Font.SizeInPoints);
            float y = 0;
            while ((iCount = stream.Read(abyBuffer, 0, 16)) > 0) {
                lAddress += 16;
            }
        }
    }
}


Panel.AutoScroll

 
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form
{
  private System.Windows.Forms.Panel Panel1;
  private System.Windows.Forms.Button Button6;
  private System.Windows.Forms.Button Button5;
  private System.Windows.Forms.Button Button4;
  private System.Windows.Forms.Button Button3;
  private System.Windows.Forms.Button Button2;
  private System.Windows.Forms.Button Button1;
  public Form1() {
        InitializeComponent();
  }

  private void InitializeComponent()
  {
    this.Panel1 = new System.Windows.Forms.Panel();
    this.Button6 = new System.Windows.Forms.Button();
    this.Button5 = new System.Windows.Forms.Button();
    this.Button4 = new System.Windows.Forms.Button();
    this.Button3 = new System.Windows.Forms.Button();
    this.Button2 = new System.Windows.Forms.Button();
    this.Button1 = new System.Windows.Forms.Button();
    this.Panel1.SuspendLayout();
    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.AutoScroll = true;
    this.Panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
    this.Panel1.Controls.Add(this.Button6);
    this.Panel1.Controls.Add(this.Button5);
    this.Panel1.Controls.Add(this.Button4);
    this.Panel1.Controls.Add(this.Button3);
    this.Panel1.Controls.Add(this.Button2);
    this.Panel1.Controls.Add(this.Button1);
    this.Panel1.Location = new System.Drawing.Point(12, 12);
    this.Panel1.Name = "Panel1";
    this.Panel1.Size = new System.Drawing.Size(218, 198);
    this.Panel1.TabIndex = 3;
    // 
    // Button6
    // 
    this.Button6.FlatStyle = System.Windows.Forms.FlatStyle.System;
    this.Button6.Location = new System.Drawing.Point(16, 180);
    this.Button6.Name = "Button6";
    this.Button6.Size = new System.Drawing.Size(168, 24);
    this.Button6.TabIndex = 5;
    this.Button6.Text = "Button6";
    // 
    // Button5
    // 
    this.Button5.FlatStyle = System.Windows.Forms.FlatStyle.System;
    this.Button5.Location = new System.Drawing.Point(16, 148);
    this.Button5.Name = "Button5";
    this.Button5.Size = new System.Drawing.Size(168, 24);
    this.Button5.TabIndex = 4;
    this.Button5.Text = "Button5";
    // 
    // Button4
    // 
    this.Button4.FlatStyle = System.Windows.Forms.FlatStyle.System;
    this.Button4.Location = new System.Drawing.Point(16, 116);
    this.Button4.Name = "Button4";
    this.Button4.Size = new System.Drawing.Size(168, 24);
    this.Button4.TabIndex = 3;
    this.Button4.Text = "Button4";
    // 
    // Button3
    // 
    this.Button3.FlatStyle = System.Windows.Forms.FlatStyle.System;
    this.Button3.Location = new System.Drawing.Point(16, 84);
    this.Button3.Name = "Button3";
    this.Button3.Size = new System.Drawing.Size(168, 24);
    this.Button3.TabIndex = 2;
    this.Button3.Text = "Button3";
    // 
    // Button2
    // 
    this.Button2.FlatStyle = System.Windows.Forms.FlatStyle.System;
    this.Button2.Location = new System.Drawing.Point(16, 52);
    this.Button2.Name = "Button2";
    this.Button2.Size = new System.Drawing.Size(168, 24);
    this.Button2.TabIndex = 1;
    this.Button2.Text = "Button2";
    // 
    // Button1
    // 
    this.Button1.FlatStyle = System.Windows.Forms.FlatStyle.System;
    this.Button1.Location = new System.Drawing.Point(16, 20);
    this.Button1.Name = "Button1";
    this.Button1.Size = new System.Drawing.Size(168, 24);
    this.Button1.TabIndex = 0;
    this.Button1.Text = "Button1";
    // 
    // ScrollablePanel
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(248, 224);
    this.Controls.Add(this.Panel1);
    this.Name = "ScrollablePanel";
    this.Text = "ScrollablePanel";
    this.Panel1.ResumeLayout(false);
    this.ResumeLayout(false);
  }
  [STAThread]
  static void Main()
  {
    Application.EnableVisualStyles();
    Application.Run(new Form1());
  }
}


Panel.AutoScrollPosition

 
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form {
    public Form1() {
        this.panel1 = new System.Windows.Forms.Panel();
        this.SuspendLayout();
        this.panel1.AutoScroll = true;
        this.panel1.BackgroundImage = new Bitmap("yourfile.bmp");
        this.panel1.Location = new System.Drawing.Point(13, 13);
        this.panel1.Size = new System.Drawing.Size(267, 243);
        this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(292, 268);
        this.Controls.Add(this.panel1);
        this.Load += new System.EventHandler(this.Form1_Load);
        this.ResumeLayout(false);        this.panel1.AutoScrollMinSize = this.panel1.BackgroundImage.Size;
    }
    private void Form1_Load(object sender, EventArgs e) {
        int midX = this.panel1.AutoScrollMinSize.Width / 2;
        int midY = this.panel1.AutoScrollMinSize.Height / 2;
        int halfSizeX = this.panel1.Size.Width / 2;
        int halfSizeY = this.panel1.Size.Height / 2;
        int startPosX = midX - halfSizeX;
        if (startPosX < 0) startPosX = 0;
        int startPosY = midY - halfSizeY;
        if (startPosY < 0) startPosY = 0;
        this.panel1.AutoScrollPosition = new Point(startPosX, startPosY);
    }
    private System.Windows.Forms.Panel panel1;
    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }
}


Panel.Dock

 
using System;
using System.Drawing;
using System.Windows.Forms;
   
class ToggleButtons: Form
{
     protected Panel   panel = new Panel();
     protected ToolBar tbar;
     protected string  strText = "Toggle";
     protected Color   clrText = SystemColors.WindowText;
     FontStyle         fontstyle = FontStyle.Regular;
   
     public static void Main()
     {
          Application.Run(new ToggleButtons());
     }
     public ToggleButtons()
     {
          panel.Parent = this;
          panel.Dock = DockStyle.Fill;
          panel.BackColor = SystemColors.Window;
          panel.ForeColor = SystemColors.WindowText;
          panel.Resize += new EventHandler(PanelOnResize);
          panel.Paint += new PaintEventHandler(PanelOnPaint);
   
          Bitmap bm = new Bitmap(GetType(), "ToggleButtons.bmp");
   
          ImageList imglst = new ImageList();
          imglst.ImageSize = new Size(bm.Width / 4, bm.Height);
          imglst.Images.AddStrip(bm);
          imglst.TransparentColor = Color.White;
   
          tbar = new ToolBar();
          tbar.ImageList = imglst;
          tbar.Parent = this;
          tbar.ShowToolTips = true;
          tbar.ButtonClick += new ToolBarButtonClickEventHandler(ToolBarOnClick);
   
          FontStyle[] afs = { FontStyle.Bold, FontStyle.Italic,
                              FontStyle.Underline, FontStyle.Strikeout };
   
          for (int i = 0; i < 4; i++)
          {
               ToolBarButton tbarbtn = new ToolBarButton();
               tbarbtn.ImageIndex = i;
               tbarbtn.Style = ToolBarButtonStyle.ToggleButton;
               tbarbtn.ToolTipText = afs[i].ToString();
               tbarbtn.Tag = afs[i];
   
               tbar.Buttons.Add(tbarbtn);
          }
     }
     void ToolBarOnClick(object obj, ToolBarButtonClickEventArgs tbbcea)
     {
          ToolBarButton tbarbtn = tbbcea.Button;
   
          if (tbarbtn.Tag == null ||
              tbarbtn.Tag.GetType() != typeof(FontStyle))
               return;
   
          if (tbarbtn.Pushed)
               fontstyle |= (FontStyle) tbarbtn.Tag;
          else
               fontstyle &= ~(FontStyle) tbarbtn.Tag;
   
          panel.Invalidate();
     }
     void PanelOnResize(object obj, EventArgs ea)
     {
          Panel panel = (Panel) obj;
          panel.Invalidate();
     }
     void PanelOnPaint(object obj, PaintEventArgs pea)
     {
          Panel    panel = (Panel) obj;
          Graphics grfx  = pea.Graphics;
          Font     font  = new Font("Times New Roman", 72, fontstyle);
          SizeF    sizef = grfx.MeasureString(strText, font);
   
          grfx.DrawString(strText, font, new SolidBrush(clrText),
                          (panel.Width - sizef.Width) / 2,
                          (panel.Height - sizef.Height) / 2);
     }
}


Panel.DockPadding.

 
using System;
using System.Collections.Generic;
using System.ruponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
public class Form1 : Form
{
  private System.Windows.Forms.GroupBox GroupBox1;
  private System.Windows.Forms.Button cmdUpdate;
  private System.Windows.Forms.NumericUpDown udDockPaddingForm;
  private System.Windows.Forms.NumericUpDown udDockPaddingPanel;
  private System.Windows.Forms.ruboBox lstDockPanel;
  private System.Windows.Forms.Label Label3;
  private System.Windows.Forms.Label Label4;
  private System.Windows.Forms.ruboBox lstDockTextBox;
  private System.Windows.Forms.Label Label2;
  private System.Windows.Forms.Label Label1;
  private System.Windows.Forms.Panel pnlDock;
  private System.Windows.Forms.TextBox txtDock;
  public Form1() {
        InitializeComponent();
        lstDockPanel.Items.AddRange(Enum.GetNames(Dock.GetType()));
      lstDockTextBox.Items.AddRange(Enum.GetNames(Dock.GetType()));
      lstDockPanel.Text = Enum.GetName(Dock.GetType(), pnlDock.Dock);
      lstDockTextBox.Text = Enum.GetName(Dock.GetType(), lstDockTextBox.Dock);
  }
  private void cmdUpdate_Click(object sender, EventArgs e)
  {
    this.DockPadding.All = (int)udDockPaddingForm.Value;
    pnlDock.DockPadding.All = (int)udDockPaddingPanel.Value;
    TypeConverter converter;
    converter = TypeDescriptor.GetConverter(Dock.GetType());
    pnlDock.Dock = (DockStyle)converter.ConvertFromString(lstDockPanel.Text);
    txtDock.Dock = (DockStyle)converter.ConvertFromString(lstDockTextBox.Text);
  }
  private void InitializeComponent()
  {
    this.GroupBox1 = new System.Windows.Forms.GroupBox();
    this.cmdUpdate = new System.Windows.Forms.Button();
    this.udDockPaddingForm = new System.Windows.Forms.NumericUpDown();
    this.udDockPaddingPanel = new System.Windows.Forms.NumericUpDown();
    this.lstDockPanel = new System.Windows.Forms.ruboBox();
    this.Label3 = new System.Windows.Forms.Label();
    this.Label4 = new System.Windows.Forms.Label();
    this.lstDockTextBox = new System.Windows.Forms.ruboBox();
    this.Label2 = new System.Windows.Forms.Label();
    this.Label1 = new System.Windows.Forms.Label();
    this.pnlDock = new System.Windows.Forms.Panel();
    this.txtDock = new System.Windows.Forms.TextBox();
    this.GroupBox1.SuspendLayout();
    ((System.ruponentModel.ISupportInitialize)(this.udDockPaddingForm)).BeginInit();
    ((System.ruponentModel.ISupportInitialize)(this.udDockPaddingPanel)).BeginInit();
    this.pnlDock.SuspendLayout();
    this.SuspendLayout();
    // 
    // GroupBox1
    // 
    this.GroupBox1.Controls.Add(this.cmdUpdate);
    this.GroupBox1.Controls.Add(this.udDockPaddingForm);
    this.GroupBox1.Controls.Add(this.udDockPaddingPanel);
    this.GroupBox1.Controls.Add(this.lstDockPanel);
    this.GroupBox1.Controls.Add(this.Label3);
    this.GroupBox1.Controls.Add(this.Label4);
    this.GroupBox1.Controls.Add(this.lstDockTextBox);
    this.GroupBox1.Controls.Add(this.Label2);
    this.GroupBox1.Controls.Add(this.Label1);
    this.GroupBox1.Location = new System.Drawing.Point(202, 20);
    this.GroupBox1.Name = "GroupBox1";
    this.GroupBox1.Size = new System.Drawing.Size(284, 224);
    this.GroupBox1.TabIndex = 14;
    this.GroupBox1.TabStop = false;
    this.GroupBox1.Text = "Configure";
    // 
    // cmdUpdate
    // 
    this.cmdUpdate.Location = new System.Drawing.Point(160, 180);
    this.cmdUpdate.Name = "cmdUpdate";
    this.cmdUpdate.Size = new System.Drawing.Size(84, 24);
    this.cmdUpdate.TabIndex = 10;
    this.cmdUpdate.Text = "Update";
    this.cmdUpdate.Click += new System.EventHandler(this.cmdUpdate_Click);
    // 
    // udDockPaddingForm
    // 
    this.udDockPaddingForm.Increment = new decimal(new int[] {
        5,
        0,
        0,
        0});
    this.udDockPaddingForm.Location = new System.Drawing.Point(160, 32);
    this.udDockPaddingForm.Name = "udDockPaddingForm";
    this.udDockPaddingForm.Size = new System.Drawing.Size(52, 21);
    this.udDockPaddingForm.TabIndex = 4;
    // 
    // udDockPaddingPanel
    // 
    this.udDockPaddingPanel.Increment = new decimal(new int[] {
        5,
        0,
        0,
        0});
    this.udDockPaddingPanel.Location = new System.Drawing.Point(160, 56);
    this.udDockPaddingPanel.Name = "udDockPaddingPanel";
    this.udDockPaddingPanel.Size = new System.Drawing.Size(52, 21);
    this.udDockPaddingPanel.TabIndex = 5;
    this.udDockPaddingPanel.Value = new decimal(new int[] {
        20,
        0,
        0,
        0});
    // 
    // lstDockPanel
    // 
    this.lstDockPanel.DropDownStyle = System.Windows.Forms.ruboBoxStyle.DropDownList;
    this.lstDockPanel.FormattingEnabled = true;
    this.lstDockPanel.Location = new System.Drawing.Point(156, 100);
    this.lstDockPanel.Name = "lstDockPanel";
    this.lstDockPanel.Size = new System.Drawing.Size(92, 21);
    this.lstDockPanel.TabIndex = 8;
    // 
    // Label3
    // 
    this.Label3.Location = new System.Drawing.Point(16, 104);
    this.Label3.Name = "Label3";
    this.Label3.Size = new System.Drawing.Size(136, 20);
    this.Label3.TabIndex = 6;
    this.Label3.Text = "Dock Panel To:";
    // 
    // Label4
    // 
    this.Label4.Location = new System.Drawing.Point(16, 128);
    this.Label4.Name = "Label4";
    this.Label4.Size = new System.Drawing.Size(136, 20);
    this.Label4.TabIndex = 7;
    this.Label4.Text = "Dock TextBox To:";
    // 
    // lstDockTextBox
    // 
    this.lstDockTextBox.DropDownStyle = System.Windows.Forms.ruboBoxStyle.DropDownList;
    this.lstDockTextBox.FormattingEnabled = true;
    this.lstDockTextBox.Location = new System.Drawing.Point(156, 124);
    this.lstDockTextBox.Name = "lstDockTextBox";
    this.lstDockTextBox.Size = new System.Drawing.Size(92, 21);
    this.lstDockTextBox.TabIndex = 9;
    // 
    // Label2
    // 
    this.Label2.Location = new System.Drawing.Point(16, 60);
    this.Label2.Name = "Label2";
    this.Label2.Size = new System.Drawing.Size(136, 20);
    this.Label2.TabIndex = 3;
    this.Label2.Text = "Panel\"s DockPadding:";
    // 
    // Label1
    // 
    this.Label1.Location = new System.Drawing.Point(16, 36);
    this.Label1.Name = "Label1";
    this.Label1.Size = new System.Drawing.Size(136, 20);
    this.Label1.TabIndex = 2;
    this.Label1.Text = "Form\"s DockPadding:";
    // 
    // pnlDock
    // 
    this.pnlDock.Controls.Add(this.txtDock);
    this.pnlDock.Dock = System.Windows.Forms.DockStyle.Left;
    this.pnlDock.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    this.pnlDock.Location = new System.Drawing.Point(0, 0);
    this.pnlDock.Name = "pnlDock";
    this.pnlDock.Padding = new System.Windows.Forms.Padding(20);
    this.pnlDock.Size = new System.Drawing.Size(224, 314);
    this.pnlDock.TabIndex = 13;
    // 
    // txtDock
    // 
    this.txtDock.Dock = System.Windows.Forms.DockStyle.Left;
    this.txtDock.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    this.txtDock.Location = new System.Drawing.Point(20, 20);
    this.txtDock.Multiline = true;
    this.txtDock.Name = "txtDock";
    this.txtDock.Size = new System.Drawing.Size(108, 274);
    this.txtDock.TabIndex = 0;
    this.txtDock.Text = "This is a TextBox.";
    // 
    // Form1
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(497, 314);
    this.Controls.Add(this.GroupBox1);
    this.Controls.Add(this.pnlDock);
    this.Text = "Docking At Work";
    this.GroupBox1.ResumeLayout(false);
    ((System.ruponentModel.ISupportInitialize)(this.udDockPaddingForm)).EndInit();
    ((System.ruponentModel.ISupportInitialize)(this.udDockPaddingPanel)).EndInit();
    this.pnlDock.ResumeLayout(false);
    this.pnlDock.PerformLayout();
    this.ResumeLayout(false);
  }

  [STAThread]
  static void Main()
  {
    Application.EnableVisualStyles();
    Application.Run(new Form1());
  }
}


Panel.Paint

 
using System;
using System.Drawing;
using System.Windows.Forms;
   
class SplitTwoProportional: Form
{
     Panel panel2;
     float fProportion = 0.5f;
   
     public static void Main()
     {
          Application.Run(new SplitTwoProportional());
     }
     public SplitTwoProportional()
     {
          Text = "";
   
          Panel panel1     = new Panel();
          panel1.Parent    = this;
          panel1.Dock      = DockStyle.Fill;
          panel1.BackColor = Color.Red;
          panel1.Resize   += new EventHandler(PanelOnResize);
          panel1.Paint    += new PaintEventHandler(PanelOnPaint);
   
          Splitter split   = new Splitter();
          split.Parent     = this;
          split.Dock       = DockStyle.Left;
          split.SplitterMoving += new SplitterEventHandler(SplitterOnMoving);
   
          panel2           = new Panel();
          panel2.Parent    = this;
          panel2.Dock      = DockStyle.Left;
          panel2.BackColor = Color.Lime;
          panel2.Resize   += new EventHandler(PanelOnResize);
          panel2.Paint    += new PaintEventHandler(PanelOnPaint);
   
          OnResize(EventArgs.Empty);
     }
     protected override void OnResize(EventArgs ea)
     {
          base.OnResize(ea);
          panel2.Width = (int) (fProportion * ClientSize.Width);
     }
     void SplitterOnMoving(object obj, SplitterEventArgs sea)
     {
          fProportion = (float) sea.SplitX / ClientSize.Width;
     }
     void PanelOnResize(object obj, EventArgs ea)
     {
          ((Panel) obj).Invalidate();
     }
     void PanelOnPaint(object obj, PaintEventArgs pea)
     {
          Panel    panel = (Panel) obj;
          Graphics grfx  = pea.Graphics;
   
          grfx.DrawEllipse(Pens.Black, 0, 0, 
                           panel.Width - 1, panel.Height - 1);
     }
}


Panel.Resize

 
using System;
using System.Drawing;
using System.Windows.Forms;
   
class SplitThreeFrames: Form
{
     public static void Main()
     {
          Application.Run(new SplitThreeFrames());
     }
     public SplitThreeFrames()
     {
          Panel panel      = new Panel();
          panel.Parent     = this;
          panel.Dock       = DockStyle.Fill;
   
          Splitter split1  = new Splitter();
          split1.Parent    = this;
          split1.Dock      = DockStyle.Left;
   
          Panel panel1     = new Panel();
          panel1.Parent    = this;
          panel1.Dock      = DockStyle.Left;
          panel1.BackColor = Color.Lime;
          panel1.Resize   += new EventHandler(PanelOnResize);
          panel1.Paint    += new PaintEventHandler(PanelOnPaint);
   
          Panel panel2     = new Panel();
          panel2.Parent    = panel;
          panel2.Dock      = DockStyle.Fill;
          panel2.BackColor = Color.Blue;
          panel2.Resize   += new EventHandler(PanelOnResize);
          panel2.Paint    += new PaintEventHandler(PanelOnPaint);
   
          Splitter split2  = new Splitter();
          split2.Parent    = panel;
          split2.Dock      = DockStyle.Top;
   
          Panel panel3     = new Panel();
          panel3.Parent    = panel;
          panel3.Dock      = DockStyle.Top;
          panel3.BackColor = Color.Tan;
          panel3.Resize   += new EventHandler(PanelOnResize);
          panel3.Paint    += new PaintEventHandler(PanelOnPaint);
   
          panel1.Width  = ClientSize.Width  / 3;
          panel3.Height = ClientSize.Height / 3;
     }
     void PanelOnResize(object obj, EventArgs ea)
     {
          ((Panel) obj).Invalidate();
     }
     void PanelOnPaint(object obj, PaintEventArgs pea)
     {
          Panel    panel = (Panel) obj;
          Graphics grfx  = pea.Graphics;
   
          grfx.DrawEllipse(Pens.Black, 0, 0, 
                           panel.Width - 1, panel.Height - 1);
     }
}