手机
当前位置:查字典教程网 >编程开发 >C#教程 >c#创建浮动工具栏功能示例
c#创建浮动工具栏功能示例
摘要:所谓的浮动工具栏,效果图如下:也就是说,可以将工具栏拖出其原先的停靠位置,而且可以将拖出来的工具栏再拖放回去。实现的基本思路如下1、拖动出来...

所谓的浮动工具栏,效果图如下:

c#创建浮动工具栏功能示例1

也就是说,可以将工具栏拖出其原先的停靠位置,而且可以将拖出来的工具栏再拖放回去。

实现的基本思路如下

1、拖动出来以后,需要创建一个大小合适的窗口,作为工具栏新的停靠容器,这个窗口可以这样设置:

FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;

ShowIcon = false;

ShowInTaskbar = false;

TopMost = true;

2、浮动工具栏可以扩展自.Net Framework提供的ToolStrip,它被拖动都某个位置,松开鼠标左键时,会触发EndDarg事件,在这个事件中,我们将其从原来的停靠容器中移除,同时根据鼠标左键松开时,在鼠标所在位置上创建一个窗口,作为工具栏的新容器。

这个就是基本的思路了,下面是浮动工具栏FloatToolstrip 具体的实现代码:

复制代码 代码如下:

代码

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Drawing;

using System.Data;

using System.Text;

using System.Windows.Forms;

namespace FloatToolStripDemo

{

public partial class FloatToolstrip : ToolStrip

{

private ToolStripPanel tsPanel;

public FloatToolstrip()

{

InitializeComponent();

this.EndDrag += new EventHandler(MyToolStrip_EndDrag);

this.SizeChanged += new EventHandler(MyToolStrip_SizeChanged);

}

private ToolStripFloatWindow floatForm;

public ToolStripFloatWindow FloatForm

{

get { return floatForm; }

set

{

floatForm = value;

if (floatForm != null)

{

floatForm.LocationChanged += new EventHandler(floatForm_LocationChanged);

floatForm.FormClosing += new FormClosingEventHandler(floatForm_FormClosing);

}

}

}

void floatForm_FormClosing(object sender, FormClosingEventArgs e)

{

e.Cancel = true;

}

private void floatForm_LocationChanged(object sender, EventArgs e)

{

//当floatwindws的位置移动到toolstrippanel中时,将this放置到 toolstripPanel上

if (this.floatForm == null)

{

return;

}

else

{

if (floatForm.HasCreated)

{

Point currentPt = new Point(floatForm.Location.X, floatForm.Location.Y);

Point minPt = this.tsPanel.PointToScreen(tsPanel.Location);

Point maxPt;

if (this.tsPanel.Height <= 20)

{

maxPt = new Point(minPt.X + this.tsPanel.Width, minPt.Y + 20);

}

else

{

maxPt = new Point(minPt.X + this.tsPanel.Width, minPt.Y + this.tsPanel.Height);

}

if ((currentPt.X > minPt.X) && (currentPt.X < maxPt.X) && (currentPt.Y > minPt.Y - 25) && (currentPt.Y < maxPt.Y - 25))

{

this.floatForm.Controls.Remove(this);

this.tsPanel.SuspendLayout();

this.tsPanel.Controls.Add(this);

this.Location = this.tsPanel.PointToClient(currentPt);

this.tsPanel.ResumeLayout();

this.floatForm.Dispose();

this.floatForm = null;

}

}

}

}

public bool isFloating

{

get

{

return (floatForm != null);

}

}

public ToolStripPanel ToolStripPanel

{

get

{

return this.tsPanel;

}

set

{

this.tsPanel = value;

}

}

private void MyToolStrip_EndDrag(object sender, EventArgs e)

{

//判断移除时

if (this.tsPanel == null)

{

MessageBox.Show("请先设置ToolStripPanel属性");

return;

}

Point dockPoint = Cursor.Position;

int openX, openY;

openX = dockPoint.X;

openY = dockPoint.Y;

Point clientPt = this.tsPanel.Parent.PointToClient(dockPoint);

if (clientPt.Y > tsPanel.Height)

{

ToolStripFloatWindow tsfw = new ToolStripFloatWindow();

this.tsPanel.Controls.Remove(this);

tsfw.Controls.Add(this);

this.Left = 0;

this.Top = 0;

this.FloatForm = tsfw;

Point newLoc = new Point(openX, openY);

tsfw.Show();

tsfw.Location = newLoc;

tsfw.SetBounds(newLoc.X, newLoc.Y, this.ClientSize.Width, this.ClientSize.Height+25);

}

}

private void MyToolStrip_SizeChanged(object sender, EventArgs e)

{

if (this.isFloating)

{

this.floatForm.Width = this.ClientSize.Width;

}

}

}

}

【c#创建浮动工具栏功能示例】相关文章:

c# 图片加密解密的实例代码

c# asp .net 动态创建sql数据库表的方法

C#泛型与非泛型性能比较的实例

c#固定长度的随机字符串例子

c#初学简单程序实例代码介绍

C# 禁止应用程序多次启动的实例

c#给图片添加文字的代码小结

c#图片添加水印的实例代码

将DLL放入到资源中,运行时自动加载的小例子

.NET创建、删除、复制文件夹及其子文件的实例方法

精品推荐
分类导航