源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C# ToolStrip制作四边停靠浮动工具栏

  • 时间:2022-01-23 22:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C# ToolStrip制作四边停靠浮动工具栏
关于浮动工具条的制作,阿捷写了一篇很不错的文章,见:[url=http://www.1sucai.cn/article/44272.htm]http://www.1sucai.cn/article/44272.htm [/url]阿捷这个工具条浮动后只能在顶部停靠,基于此,我在这边增加在左/右/底部停靠,停靠条件是浮动窗体紧贴或越过主窗体边缘。 其实阿捷给出的代码已经相当详细了:) 我这里主要给出重写的ToolStrip代码段,增加了三个ToolStripPanel
[u]复制代码[/u] 代码如下:
    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     }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部