程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> C# ToolStrip制作四邊停靠浮動工具欄

C# ToolStrip制作四邊停靠浮動工具欄

編輯:更多關於編程

     這篇文章主要介紹了C# ToolStrip浮動工具欄的制作,可以上/下/左/右停靠,代碼在下面

    關於浮動工具條的制作   其實阿捷給出的代碼已經相當詳細了:) 我這裡主要給出重寫的ToolStrip代碼段,增加了三個ToolStripPanel       代碼如下:     public partial class MyToolStrip : ToolStrip     {         public MyToolStrip()         {             InitializeComponent();             this.EndDrag += new EventHandler(MyToolStrip_EndDrag);             this.SizeChanged += new EventHandler(MyToolStrip_SizeChanged);         }           #region 漂浮狀態           public ToolStripFloatWindow FloatWindow { get; set; }           private bool isFloating         {             get             {                 return (FloatWindow != null);             }         }           public ToolStripPanel TopToolStripPanel { get; set; }         public ToolStripPanel BottomToolStripPanel { get; set; }         public ToolStripPanel LeftToolStripPanel { get; set; }         public ToolStripPanel RightToolStripPanel { get; set; }           #endregion           #region 漂浮實現           private void FloatWindow_LocationChanged(object sender, EventArgs e)         {             //當floatwindws的位置移動到 toolstrippanel中時,將this放置到 toolstripPanel上             if (this.FloatWindow == null)             {                 return;             }             if (FloatWindow.HasCreated)             {                 //主窗體位置                 Point frmLoc = this.TopToolStripPanel.Parent.Location;                 //浮動工具條位置                 Point toolBarLoc = FloatWindow.Location;                   if (toolBarLoc.Y - frmLoc.Y <= 0) //置於頂部StripPanel                 {                     this.FloatWindow.Controls.Remove(this);                     this.TopToolStripPanel.SuspendLayout();                     this.TopToolStripPanel.Controls.Add(this);                     this.Location = this.TopToolStripPanel.PointToClient(toolBarLoc);                     this.TopToolStripPanel.ResumeLayout();                     this.FloatWindow.Dispose();                     this.FloatWindow = null;                     return;                 }                 if (toolBarLoc.X - frmLoc.X <= 0) //置於左邊StripPanel                 {                     this.FloatWindow.Controls.Remove(this);                     this.LeftToolStripPanel.SuspendLayout();                     this.LeftToolStripPanel.Controls.Add(this);                     this.Location = this.LeftToolStripPanel.PointToClient(toolBarLoc);                     this.LeftToolStripPanel.ResumeLayout();                     this.FloatWindow.Dispose();                     this.FloatWindow = null;                     return;                 }                 if (toolBarLoc.X + FloatWindow.Width >= this.TopToolStripPanel.Parent.Width) //置於右邊StripPanel                 {                     this.FloatWindow.Controls.Remove(this);                     this.RightToolStripPanel.SuspendLayout();                     this.RightToolStripPanel.Controls.Add(this);                     this.Location = this.RightToolStripPanel.PointToClient(toolBarLoc);                     this.RightToolStripPanel.ResumeLayout();                     this.FloatWindow.Dispose();                     this.FloatWindow = null;                     return;                 }                 if (toolBarLoc.Y + FloatWindow.Height >= this.TopToolStripPanel.Parent.Height) //置於底部StripPanel                 {                     this.FloatWindow.Controls.Remove(this);                     this.BottomToolStripPanel.SuspendLayout();                     this.BottomToolStripPanel.Controls.Add(this);                     this.Location = this.BottomToolStripPanel.PointToClient(toolBarLoc);                     this.BottomToolStripPanel.ResumeLayout();                     this.FloatWindow.Dispose();                     this.FloatWindow = null;                     return;                 }             }         }           private void MyToolStrip_EndDrag(object sender, EventArgs e)         {             Point screenPt = Cursor.Position;             Point clientPt = this.TopToolStripPanel.Parent.PointToClient(screenPt);               //浮動區域             Rectangle floatArea = new Rectangle(32, 32,    //我這裡圖標大小調整為32*32                 this.TopToolStripPanel.Parent.Width - 2 * 32,                  this.TopToolStripPanel.Parent.Height - 2 * 32);               if (floatArea.Contains(clientPt)) //判斷移出時             {                 ToolStripFloatWindow fw = new ToolStripFloatWindow();                 fw.Controls.Add(this);                 this.Left = 0;                 this.Top = 0;                 this.FloatWindow = fw;                 FloatWindow.LocationChanged += new EventHandler(FloatWindow_LocationChanged);                 fw.SetBounds(screenPt.X, screenPt.Y, this.ClientSize.Width, this.ClientSize.Height + 22); //22為窗體標題欄高度                   fw.Show();              }         }           private void MyToolStrip_SizeChanged(object sender, EventArgs e)         {             if (this.isFloating)             {                 this.FloatWindow.Width = this.ClientSize.Width;             }         }           #endregion       }  
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved