1.代码
#region 自定义标题栏
public void SetTitlePanel(Panel pTitleBar, bool maximize)
{
if (maximize)
{
pTitleBar.MouseDoubleClick -= pTitleBar_MouseDoubleClick;
pTitleBar.MouseDoubleClick += pTitleBar_MouseDoubleClick;
}
pTitleBar.MouseDown -= pTitleBar_MouseDown;
pTitleBar.MouseDown += pTitleBar_MouseDown;
pTitleBar.MouseUp -= pTitleBar_MouseUp;
pTitleBar.MouseUp += pTitleBar_MouseUp;
pTitleBar.MouseMove -= pTitleBar_MouseMove;
pTitleBar.MouseMove += pTitleBar_MouseMove;
pTitleBar.MouseEnter -= pTitleBar_MouseEnter;
pTitleBar.MouseEnter += pTitleBar_MouseEnter;
pTitleBar.MouseLeave -= pTitleBar_MouseLeave;
pTitleBar.MouseLeave += pTitleBar_MouseLeave;
}
private void pTitleBar_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (this.WindowState == FormWindowState.Normal)
this.WindowState = FormWindowState.Maximized;
else
this.WindowState = FormWindowState.Normal;
}
}
private bool IsDrag = false;
private int enterX;
private int enterY;
private void pTitleBar_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
enterX = e.Location.X;
enterY = e.Location.Y;
IsDrag = true;
}
}
private void pTitleBar_MouseUp(object sender, MouseEventArgs e)
{
IsDrag = false;
enterX = 0;
enterY = 0;
}
private void pTitleBar_MouseMove(object sender, MouseEventArgs e)
{
Panel p = (Panel)sender;
if (IsDrag)
{
if (this.WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Normal;
enterX = Width / 2;
enterY = p.Height / 2;
}
Left += e.Location.X - enterX;
Top += e.Location.Y - enterY;
}
}
private void pTitleBar_MouseEnter(object sender, EventArgs e)
{
this.Cursor = Cursors.Hand;
}
private void pTitleBar_MouseLeave(object sender, EventArgs e)
{
this.Cursor = Cursors.Default;
}
#endregion
2.引用
SetTitlePanel(
panel1,
false
);