时间:2021-05-20
所谓的浮动工具栏,效果图如下:
也就是说,可以将工具栏拖出其原先的停靠位置,而且可以将拖出来的工具栏再拖放回去。
实现的基本思路如下
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://ponent();
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;
}
}
}
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
大家都知道,WPS文档有一个功能叫做浮动工具栏,就是我们在编辑文档的时候可以直接利用浮动工具栏进行编辑,这样就非常的简便,今天小编就教大家WPS文档如何设置浮动
经常使用Word的童鞋们会知道,Word自带了了一个浮动工具栏功能,如下图所示,当你选中一段内容后,此时文档会自动出现如下图所示的浮动工具栏,该功能可以说极
经常使用Word的童鞋们会知道,Word自带了了一个浮动工具栏功能,如下图所示,当你选中一段内容后,此时文档会自动出现如下图所示的浮动工具栏,该功能可以说极
经常使用Word的童鞋们会知道,Word自带了了一个浮动工具栏功能,如下图所示,当你选中一段内容后,此时文档会自动出现如下图所示的浮动工具栏,该功能可以说极方便
Excel中的浮动工具栏,会在选中文本时显示出来。我们可以借助浮动工具栏快速访问字体,字号,加粗、倾斜、对齐方式、颜色、缩进和项目符号进行操作。但是,我们觉