实现工具条拖放:
private ToolStripPanel tsPanel; //定义全局变量,定义一个工具条容器,存放拖动出来的工具条
在窗体加载时设置属性(初始化的构造函数中也可以):
FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; ShowIcon = false; ShowInTaskbar = false; TopMost = true;
private FloatToolBarForm floatForm;
public FloatToolBarForm FloatForm() { get { return floatForm; } set { floatForm = value; if (floatForm != null) { floatForm.LocationChanged += new EventHandler(FloatToolBarForm_FormClosing); floatForm.FormClosing += new FormClosingEventHandler(FloatToolBarForm_FormClosing); } } } private void FloatToolBarForm_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; } private void FloatToolBarForm_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; } } } }