Csharp/C Sharp/GUI Windows Form/Splitter

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

HTML Split Window

<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; using System.IO; namespace HTMLSplitWindow {

 /// <summary>
 /// Summary description for HTMLSplitWindow.
 /// </summary>
 public class HTMLSplitWindow : System.Windows.Forms.Form
 {
   internal System.Windows.Forms.Panel Panel3;
   internal System.Windows.Forms.TextBox TextBox1;
   internal System.Windows.Forms.Splitter Splitter1;
   internal System.Windows.Forms.Panel Panel2;
   private AxSHDocVw.AxWebBrowser AxWebBrowser2;
   internal System.Windows.Forms.Splitter Splitter2;
   internal System.Windows.Forms.Panel pnlShow;
   internal System.Windows.Forms.Button cmdShow;
   internal System.Windows.Forms.Panel pnlFileList;
   internal System.Windows.Forms.Button cmdHide;
   internal System.Windows.Forms.ListView ListView1;
   internal System.Windows.Forms.ColumnHeader ColumnHeader1;
   /// <summary>
   /// Required designer variable.
   /// </summary>
   private System.ruponentModel.Container components = null;
   public HTMLSplitWindow()
   {
     //
     // 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()
   {
     System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(HTMLSplitWindow));
     this.Panel3 = new System.Windows.Forms.Panel();
     this.TextBox1 = new System.Windows.Forms.TextBox();
     this.Splitter1 = new System.Windows.Forms.Splitter();
     this.Panel2 = new System.Windows.Forms.Panel();
     this.AxWebBrowser2 = new AxSHDocVw.AxWebBrowser();
     this.Splitter2 = new System.Windows.Forms.Splitter();
     this.pnlShow = new System.Windows.Forms.Panel();
     this.cmdShow = new System.Windows.Forms.Button();
     this.pnlFileList = new System.Windows.Forms.Panel();
     this.cmdHide = new System.Windows.Forms.Button();
     this.ListView1 = new System.Windows.Forms.ListView();
     this.ColumnHeader1 = new System.Windows.Forms.ColumnHeader();
     this.Panel3.SuspendLayout();
     this.Panel2.SuspendLayout();
     ((System.ruponentModel.ISupportInitialize)(this.AxWebBrowser2)).BeginInit();
     this.pnlShow.SuspendLayout();
     this.pnlFileList.SuspendLayout();
     this.SuspendLayout();
     // 
     // Panel3
     // 
     this.Panel3.Controls.AddRange(new System.Windows.Forms.Control[] {
                                        this.TextBox1});
     this.Panel3.Dock = System.Windows.Forms.DockStyle.Fill;
     this.Panel3.Location = new System.Drawing.Point(204, 131);
     this.Panel3.Name = "Panel3";
     this.Panel3.Size = new System.Drawing.Size(239, 154);
     this.Panel3.TabIndex = 28;
     // 
     // TextBox1
     // 
     this.TextBox1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left) 
       | System.Windows.Forms.AnchorStyles.Right);
     this.TextBox1.Multiline = true;
     this.TextBox1.Name = "TextBox1";
     this.TextBox1.ReadOnly = true;
     this.TextBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
     this.TextBox1.Size = new System.Drawing.Size(240, 153);
     this.TextBox1.TabIndex = 0;
     this.TextBox1.Text = "";
     // 
     // Splitter1
     // 
     this.Splitter1.Dock = System.Windows.Forms.DockStyle.Top;
     this.Splitter1.Location = new System.Drawing.Point(204, 128);
     this.Splitter1.Name = "Splitter1";
     this.Splitter1.Size = new System.Drawing.Size(239, 3);
     this.Splitter1.TabIndex = 27;
     this.Splitter1.TabStop = false;
     // 
     // Panel2
     // 
     this.Panel2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
     this.Panel2.Controls.AddRange(new System.Windows.Forms.Control[] {
                                        this.AxWebBrowser2});
     this.Panel2.Dock = System.Windows.Forms.DockStyle.Top;
     this.Panel2.Location = new System.Drawing.Point(204, 5);
     this.Panel2.Name = "Panel2";
     this.Panel2.Size = new System.Drawing.Size(239, 123);
     this.Panel2.TabIndex = 26;
     // 
     // AxWebBrowser2
     // 
     this.AxWebBrowser2.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left) 
       | System.Windows.Forms.AnchorStyles.Right);
     this.AxWebBrowser2.ContainingControl = this;
     this.AxWebBrowser2.Enabled = true;
     this.AxWebBrowser2.Location = new System.Drawing.Point(-4, 0);
     this.AxWebBrowser2.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("AxWebBrowser2.OcxState")));
     this.AxWebBrowser2.Size = new System.Drawing.Size(240, 120);
     this.AxWebBrowser2.TabIndex = 0;
     // 
     // Splitter2
     // 
     this.Splitter2.Location = new System.Drawing.Point(201, 5);
     this.Splitter2.Name = "Splitter2";
     this.Splitter2.Size = new System.Drawing.Size(3, 280);
     this.Splitter2.TabIndex = 25;
     this.Splitter2.TabStop = false;
     // 
     // pnlShow
     // 
     this.pnlShow.Controls.AddRange(new System.Windows.Forms.Control[] {
                                         this.cmdShow});
     this.pnlShow.Dock = System.Windows.Forms.DockStyle.Left;
     this.pnlShow.Location = new System.Drawing.Point(181, 5);
     this.pnlShow.Name = "pnlShow";
     this.pnlShow.Size = new System.Drawing.Size(20, 280);
     this.pnlShow.TabIndex = 24;
     this.pnlShow.Visible = false;
     // 
     // cmdShow
     // 
     this.cmdShow.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left);
     this.cmdShow.FlatStyle = System.Windows.Forms.FlatStyle.System;
     this.cmdShow.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
     this.cmdShow.Name = "cmdShow";
     this.cmdShow.Size = new System.Drawing.Size(16, 280);
     this.cmdShow.TabIndex = 17;
     this.cmdShow.Text = ">";
     this.cmdShow.Click += new System.EventHandler(this.cmdShow_Click);
     // 
     // pnlFileList
     // 
     this.pnlFileList.Controls.AddRange(new System.Windows.Forms.Control[] {
                                           this.cmdHide,
                                           this.ListView1});
     this.pnlFileList.Dock = System.Windows.Forms.DockStyle.Left;
     this.pnlFileList.Location = new System.Drawing.Point(5, 5);
     this.pnlFileList.Name = "pnlFileList";
     this.pnlFileList.Size = new System.Drawing.Size(176, 280);
     this.pnlFileList.TabIndex = 23;
     // 
     // cmdHide
     // 
     this.cmdHide.Anchor = ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
       | System.Windows.Forms.AnchorStyles.Right);
     this.cmdHide.FlatStyle = System.Windows.Forms.FlatStyle.System;
     this.cmdHide.Location = new System.Drawing.Point(0, 260);
     this.cmdHide.Name = "cmdHide";
     this.cmdHide.Size = new System.Drawing.Size(172, 20);
     this.cmdHide.TabIndex = 1;
     this.cmdHide.Text = "<< Hide";
     this.cmdHide.Click += new System.EventHandler(this.cmdHide_Click);
     // 
     // ListView1
     // 
     this.ListView1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
       | System.Windows.Forms.AnchorStyles.Left) 
       | System.Windows.Forms.AnchorStyles.Right);
     this.ListView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
                                           this.ColumnHeader1});
     this.ListView1.Name = "ListView1";
     this.ListView1.Size = new System.Drawing.Size(172, 256);
     this.ListView1.TabIndex = 0;
     this.ListView1.View = System.Windows.Forms.View.Details;
     this.ListView1.SelectedIndexChanged += new System.EventHandler(this.ListView1_SelectedIndexChanged);
     // 
     // ColumnHeader1
     // 
     this.ColumnHeader1.Text = "File";
     this.ColumnHeader1.Width = 99;
     // 
     // HTMLSplitWindow
     // 
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
     this.ClientSize = new System.Drawing.Size(448, 290);
     this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                     this.Panel3,
                                     this.Splitter1,
                                     this.Panel2,
                                     this.Splitter2,
                                     this.pnlShow,
                                     this.pnlFileList});
     this.DockPadding.All = 5;
     this.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
     this.Name = "HTMLSplitWindow";
     this.Text = "HTML Split";
     this.Load += new System.EventHandler(this.HTMLSplitWindow_Load);
     this.Panel3.ResumeLayout(false);
     this.Panel2.ResumeLayout(false);
     ((System.ruponentModel.ISupportInitialize)(this.AxWebBrowser2)).EndInit();
     this.pnlShow.ResumeLayout(false);
     this.pnlFileList.ResumeLayout(false);
     this.ResumeLayout(false);
   }
   #endregion
   /// <summary>
   /// The main entry point for the application.
   /// </summary>
   [STAThread]
   static void Main() 
   {
     Application.Run(new HTMLSplitWindow());
   }
   private void cmdHide_Click(object sender, System.EventArgs e)
   {
     pnlFileList.Visible = false;
     pnlShow.Visible = true;
   }
   private void cmdShow_Click(object sender, System.EventArgs e)
   {
     pnlFileList.Visible = true;
     pnlShow.Visible = false;
   }
   private void HTMLSplitWindow_Load(object sender, System.EventArgs e)
   {
     DirectoryInfo d = new DirectoryInfo(Application.StartupPath + @"\..\..\view\");
     foreach (FileInfo f in d.GetFiles())
     {
       ListView1.Items.Add(f.Name);
     }
   }
   private void ListView1_SelectedIndexChanged(object sender, System.EventArgs e)
   {
     try
     {
       // Construct the objects required for the Navigate2 method call.
       // C# does not support optional parameters.
       string urlText = @"C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\" + ListView1.SelectedItems[0].Text;
       object url = urlText;
       int emptyInt = 0;
       object empty = emptyInt;
       AxWebBrowser2.Navigate2(ref url, ref empty, ref empty, ref empty, ref empty);
       StreamReader r = File.OpenText(@"C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\" + ListView1.SelectedItems[0].Text);
       TextBox1.Text = r.ReadToEnd();
     }
     catch
     {
     }
   }
 }

}


      </source>

<A href="http://www.nfex.ru/Code/CSharpDownload/HTMLSplitWindow.zip">HTMLSplitWindow.zip( 181 k)</a>


One Panel with Splitter

<source lang="csharp">

using System; using System.Drawing; using System.Windows.Forms;

class OnePanelWithSplitter: Form {

    public static void Main()
    {
         Application.Run(new OnePanelWithSplitter());
    }
    public OnePanelWithSplitter()
    {
         Text = "One Panel with Splitter";
  
         Splitter split  = new Splitter();
         split.Parent    = this;
         split.Dock      = DockStyle.Left;
  
         Panel panel     = new Panel();
         panel.Parent    = this;
         panel.Dock      = DockStyle.Left;
         panel.BackColor = Color.Lime;
         panel.Resize   += new EventHandler(PanelOnResize);
         panel.Paint    += new PaintEventHandler(PanelOnPaint);
    }
    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);
    }

}

</source>


Split Three Across

<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms;

class SplitThreeAcross: Form {

    public static void Main()
    {
         Application.Run(new SplitThreeAcross());
    }
    public SplitThreeAcross()
    {
         Panel panel1     = new Panel();
         panel1.Parent    = this;
         panel1.Dock      = DockStyle.Fill;
         panel1.BackColor = Color.Cyan;
         panel1.Resize   += new EventHandler(PanelOnResize);
         panel1.Paint    += new PaintEventHandler(PanelOnPaint);
  
         Splitter split1  = new Splitter();
         split1.Parent    = this;
         split1.Dock      = DockStyle.Left;
  
         Panel panel2     = new Panel();
         panel2.Parent    = this;
         panel2.Dock      = DockStyle.Left;
         panel2.BackColor = Color.Lime;
         panel2.Resize   += new EventHandler(PanelOnResize);
         panel2.Paint    += new PaintEventHandler(PanelOnPaint);
  
         Splitter split2  = new Splitter();
         split2.Parent    = this;
         split2.Dock      = DockStyle.Right;
  
         Panel panel3     = new Panel();
         panel3.Parent    = this;
         panel3.Dock      = DockStyle.Right;
         panel3.BackColor = Color.Red;
         panel3.Resize   += new EventHandler(PanelOnResize);
         panel3.Paint    += new PaintEventHandler(PanelOnPaint);
  
         panel1.Width = 
         panel2.Width = 
         panel3.Width = ClientSize.Width / 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);
    }

}

</source>


Split Three Frames

<source lang="csharp"> 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);
    }

}

</source>


Split Two Proportional

<source lang="csharp"> 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);
    }

}

</source>


Two Panels with Splitter

<source lang="csharp"> using System; using System.Drawing; using System.Windows.Forms;

class TwoPanelsWithSplitter: Form {

    public static void Main()
    {
         Application.Run(new TwoPanelsWithSplitter());
    }
    public TwoPanelsWithSplitter()
    {
         Panel panel1     = new Panel();
         panel1.Parent    = this;
         panel1.Dock      = DockStyle.Fill;
         panel1.BackColor = Color.Lime;
         panel1.Resize   += new EventHandler(PanelOnResize);
         panel1.Paint    += new PaintEventHandler(PanelOnPaint);
  
         Splitter split   = new Splitter();
         split.Parent     = this;
         split.Dock       = DockStyle.Right;
  
         Panel panel2     = new Panel();
         panel2.Parent    = this;
         panel2.Dock      = DockStyle.Right;
         panel2.BackColor = Color.Red;
         panel2.Resize   += new EventHandler(PanelOnResize);
         panel2.Paint    += new PaintEventHandler(PanelOnPaint);
    }
    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);
    }

}

</source>