无标题窗体拖动关闭最大化最小化按钮
此方法适合用于无标题窗体拖动的界面
首先我们先设计好一个界面,如下图:
再拖一个信息提示工具ToolTip,如下图:
写好提示代码:
private void Form3_Load(object sender, EventArgs e)
{
Prompt.ShowAlways = true;
Tooltp(Minimum, “最小化”);
Tooltp(Maximum, “最大化”);
Tooltp(Close, “关闭”);
this.qiangjianmobanku.Visible = true;
this.shengchengbaogao.Visible = false;
this.qiangjianbaogaoku.Visible = false;
}
///
/// 信息提示
///
/// 控件名称
/// 提示信息
private void Tooltp(Control cName, string cInfo)
{
Prompt.SetToolTip(cName, cInfo);
}
然后写三个button按钮的单击事件:
第一个关闭点击事件:
#region 窗体关闭特效
public const Int32 AW_CENTER = 0x00000010;
public const Int32 AW_HIDE = 0x00010000;
//重写API函数,用来执行窗体动画显示操作
[DllImportAttribute("user32.dll")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
#endregion 窗体关闭特效
///
/// 关闭窗口
///
///
///
private void Close_Click(object sender, EventArgs e)
{
AnimateWindow(this.Handle, 100, AW_CENTER + AW_HIDE);//结束窗体动画
//this.Close();
Application.Exit();
}
第二个放大按钮点击事件:
///
/// 最大化
///
///
///
private void Maximum_Click(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Maximized)
{
Maximum.Text = “最大”;
this.WindowState = FormWindowState.Normal;
}
else
{
Maximum.Text = “还原”;
Tooltp(Maximum, “还原”);
this.WindowState = FormWindowState.Normal;
this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
this.WindowState = FormWindowState.Maximized;
}
}
第三个最小化按钮点击事件:
#region 最小化右键菜单
const int WS_CLIPCHILDREN = 0x2000000;
const int WS_MINIMIZEBOX = 0x20000;
const int WS_MAXIMIZEBOX = 0x10000;
const int WS_SYSMENU = 0x80000;
const int CS_DBLCLKS = 0x8;
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style = WS_CLIPCHILDREN | WS_MINIMIZEBOX | WS_SYSMENU;
cp.ClassStyle = CS_DBLCLKS;
return cp;
}
}
#endregion 最小化右键菜单
/// <summary>
/// 最小化
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Minimum_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}