扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、拖动出来以后,需要创建一个大小合适的窗口,作为工具栏新的停靠容器,这个窗口可以这样设置:
创新互联是一家集网站建设,夏县企业网站建设,夏县品牌网站建设,网站定制,夏县网站建设报价,网络营销,网络优化,夏县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
ShowIcon = false;
ShowInTaskbar = false;
TopMost = true;
2、浮动工具栏可以扩展自.Net
Framework提供的ToolStrip,它被拖动都某个位置,松开鼠标左键时,会触发EndDarg事件,在这个事件中,我们将其从原来的停靠容器中移除,同时根据鼠标左键松开时,在鼠标所在位置上创建一个窗口,作为工具栏的新容器。
这个就是基本的思路了,下面是浮动工具栏FloatToolstrip 具体的实现代码:
[csharp] view plain copy print?
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;
}
}
}
}
动态创建的作为浮动工具栏临时容器的窗口,需要加入一些处理技巧,以免发生在创建该窗口的工作尚未结束时,Dispose了这个窗口,这种情况发生在快速拖动工具栏时,触发了EndDrag事件,导致去创建临时窗口作为工具栏新的容器,而这时又将工具栏拖回原停靠容器中,会导致Dispose还没有创建完毕的临时窗口,发生异常!
可以做一个窗体,该窗体中放入你需要的菜单。
这个窗体几个特殊设置:
1。TOPmost设置为TRUE
2。Formborderstyle设置为none
3。showintaskbar设置为False
4。size设置为你的菜单大小
用的时候new一下就有啦!
这样就相当于悬浮窗体了,细节自己研究吧!^_^
1、禁止对话框中的关闭按钮有二种方法。 第一种方法 ,用ModiftMenu()涵数来实现: CMenu* pMenu = this-GetSystemMenu(FALSE); pMenu-ModifyMenu(SC_CLOSE,MF_BYCOMMAND | MF_GRAYED );第二种方法 ,用EnableMenuItem()涵数来实现: CMenu* pMenu = this-GetSystemMenu(FALSE); pMenu-EnableMenuItem( SC_CLOSE, MF_BYCOMMAND|MF_GRAYED); 2、禁止浮动工具条上的系统菜单。 新建一个CToolBar的派生类CxxToolBar,在新类中的左键双击(CxxToolBar::OnLButtonDblClk(...))和左键单击(CxxToolBar:: OnLButtonDown(...))涵数中分别加入下面代码既可: if (IsFloating()) //工具条正在浮动状态中{CWnd* pMiniFrame; CWnd* pDockBar; pDockBar = GetParent(); pMiniFrame = pDockBar-GetParent(); //去除其上系统菜单 pMiniFrame-ModifyStyle(WS_SYSMENU, NULL); //重绘工具条 pMiniFrame-ShowWindow(SW_HIDE); pMiniFrame-ShowWindow(SW_SHOW);}3、禁止窗口最大化按钮
1、首先点击屏幕左上角的苹果标志。
2、选择“系统偏好设置”。
3、打开后,选择“dock”,注意,10.14以上版本的Mac系统中这里叫“程序坞”。
4、取消勾选自动显示和隐藏Dock。
5、取消之后,下方就会出现工具条了。
6、最后点击左上角的红色叉号,关闭系统偏好设置即可。
创建工具栏很简单,直接使用CommandBars集合的Add方法,除了需要指定Name属性之外,可以接受其它所有的默认属性值。可以通过Position属性指定工具栏显示的位置。
Position属性的值由msoBarPosition常数指定。
msoBarLeft: 0,工具栏显示在工作表左边
msoBarTop: 1,工具栏显示在工作表上边
msoBarRight: 2,工具栏显示在工作表右边
msoBarBottom: 3,工具栏显示在工作表下边
msoBarFloating: 4,工具栏浮动显示
msoBarMenuBar: 5,这个常数表示创建菜单栏,不用于创建工具栏
msoBarPopup: 6,这个常数表示创建弹出菜单
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流