Winform 基础二 最小化 最大化 关闭 点击任务栏隐藏显示 点击鼠标左键移动窗体
一 最大化
二 最小化
三 关闭
四 点击任务栏隐藏显示
五 点击鼠标左键移动窗体
六 阴影效果鼠标左键移动窗口

#region UI设置 最大化、最小化、关闭、鼠标移动窗口、点击任务栏切换窗口
this.pnlMin.MouseHover += new EventHandler(pnlMin_MouseMove);//最小化按钮的鼠标经过样式改变事件
this.pnlMin.MouseLeave += new EventHandler(pnlMin_MouseLeave);//最小化按钮的鼠标离开样式改变事件
this.pnlMin.Click += new EventHandler(pnlMin_Click);//最小化按钮单击事件
this.pnlMax.MouseHover += new EventHandler(pnlMax_MouseMove);//最小化按钮的鼠标经过样式改变事件
this.pnlMax.MouseLeave += new EventHandler(pnlMax_MouseLeave);//最小化按钮的鼠标离开样式改变事件
this.pnlMax.Click += new EventHandler(pnlMax_Click);//最小化按钮单击事件
this.pnlClose.MouseHover += new EventHandler(pnlClose_MouseMove);//鼠标经过关闭按钮时的样式改变
this.pnlClose.MouseLeave += new EventHandler(pnlClose_MouseLeave);//鼠标离开关闭按钮事件
this.pnlClose.Click += new EventHandler(pnlClose_Click);//关闭按钮的单击事件
this.pnlHead1.MouseDown += new MouseEventHandler(sysSet_MouseDown); //鼠标移动窗体位置
this.pnlHead1.MouseMove += new MouseEventHandler(sysSet_MouseMove);//鼠标移动窗体位置
this.pnlHead1.MouseUp += new MouseEventHandler(sysSet_MouseUp);//鼠标移动窗体位置
#endregion
#region UI设置 最大化、最小化、关闭、鼠标移动窗口、点击任务栏切换窗口
#region 单击任务栏,最小化
protected override CreateParams CreateParams //点击任务栏实现最小化与还原
{
get
{
const int WS_MINIMIZEBOX = 0x00020000;
CreateParams cp = base.CreateParams;
cp.Style = cp.Style | WS_MINIMIZEBOX; // 允许最小化操作
return cp;
}
}
#endregion
#region 最小化按钮
//最小化按钮的鼠标经过改变样式事件
private void pnlMin_MouseMove(object sender, EventArgs e)
{
tip.SetToolTip(this.pnlMin, "最小化");
this.pnlMin.BackColor = Color.FromArgb(, , , );
}
//最小化按钮的鼠标离开改变样式事件
private void pnlMin_MouseLeave(object sender, EventArgs e)
{
this.pnlMin.BackColor = Color.Transparent;
}
//最小化按钮的单击事件
private void pnlMin_Click(object sender, EventArgs e)
{
if (WindowState != FormWindowState.Minimized)
{
WindowState = FormWindowState.Minimized;
}
}
#endregion
#region 最大化
private void pnlMax_MouseMove(object sender, EventArgs e)
{
tip.SetToolTip(this.pnlMax, "最大化");
if (WindowState == FormWindowState.Maximized)
{
tip.SetToolTip(this.pnlMax, "恢复");
}
this.pnlMax.BackColor = Color.FromArgb(, , , );
}
//最小化按钮的鼠标离开改变样式事件
private void pnlMax_MouseLeave(object sender, EventArgs e)
{
this.pnlMax.BackColor = Color.Transparent;
}
//最小化按钮的单击事件
private void pnlMax_Click(object sender, EventArgs e)
{
int h = Screen.PrimaryScreen.WorkingArea.Height;
int w = Screen.PrimaryScreen.WorkingArea.Width;
if (WindowState == FormWindowState.Normal)
{
//this.MaximumSize = new Size(w, h);//设置窗体最大化为满屏
this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
this.pnlMax.BackgroundImage = global::Cnwin.Apps.Properties.Resources.max;
//this.tbCnt.Dock = DockStyle.Right;
//this.pnlCnt.Height = h - 10;
//this.pnlCnt.Width = w - 2;
//this.sptCnt.Width = 260;
this.pnlMax.Invalidate();
WindowState = FormWindowState.Maximized;
//PnlRslt.Left = (w / 2);
//sptCnt.SplitterDistance = 80;
//dgvRslt.Width = w - 100;
}
else
{
this.FormBorderStyle = FormBorderStyle.None;
this.pnlMax.BackgroundImage = global::Cnwin.Apps.Properties.Resources.max16;
//this.pnlCnt.Height = 629;
//this.pnlCnt.Width = 964;
this.MaximumSize = new Size(, );
this.pnlMax.Invalidate();
WindowState = FormWindowState.Normal;
this.Height = ;
//PnlRslt.Left = 420;
//sptCnt.SplitterDistance = 80;
//dgvRslt.Width = 840;
//dgvRslt.Height = 452;
//pnlPage.Top = 508;
}
//int width = 0; int clmSum = this.dgvRslt.Columns.Count;
////对于DataGridView的每一个列都调整
//for (int i = 0; i < clmSum; i++)
//{
// //将每一列都调整为自动适应模式
// this.dgvRslt.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells);
// //记录整个DataGridView的宽度
// width += this.dgvRslt.Columns[i].Width;
//}
////判断调整后的宽度与原来设定的宽度的关系,如果是调整后的宽度大于原来设定的宽度,
////则将DataGridView的列自动调整模式设置为显示的列即可,
////如果是小于原来设定的宽度,将模式改为填充。
//if (width > this.dgvRslt.Size.Width)
//{
// this.dgvRslt.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
//}
//else
//{
// //this.dgvRslt.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
//}
////this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea;
}
#endregion
#region 关闭按钮
//鼠标经过关闭按钮时触发样式改变
private void pnlClose_MouseMove(object sender, EventArgs e)
{
tip.SetToolTip(this.pnlClose, "关闭");
this.pnlClose.BackColor = Color.Red;
}
//鼠标离开关闭按钮触发样式改变
private void pnlClose_MouseLeave(object sender, EventArgs e)
{
this.pnlClose.BackColor = Color.Transparent;
}
protected void pnlClose_Click(object sender, EventArgs e)
{
FrmMonitor lg = new FrmMonitor();
lg.Dispose();
Application.Exit();
}
#endregion
#region 鼠标移动窗体移动
//窗体拖动
bool isMouseDown = false;
Point cwpt = new Point(); //当前窗体位置
Point cmpt = new Point(); //当前鼠标的按下位置
private void sysSet_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = true;
cwpt = this.Location;
cmpt = System.Windows.Forms.Control.MousePosition;
}
}
private void sysSet_MouseUp(object sender, MouseEventArgs e)
{
isMouseDown = false;
}
private void sysSet_MouseMove(object sender, MouseEventArgs e)
{
int rangeX = , rangeY = ; //计算当前鼠标光标的位移,让窗体进行相同大小的位移
if (isMouseDown)
{
Point pt = System.Windows.Forms.Control.MousePosition;
rangeX = cmpt.X - pt.X;
rangeY = cmpt.Y - pt.Y;
this.Location = new Point(cwpt.X - rangeX, cwpt.Y - rangeY);
}
}
#endregion
#endregion
六 阴影效果鼠标左键移动窗口
1)引用API
//窗体阴影API
private const int CS_DropSHADOW = 0x20000;//窗体边框阴影
private const int WM_MOVING = 0x0216;//窗体移动限制不超过屏幕
private const int GCL_STYLE = (-);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SetClassLong(IntPtr hwnd, int nIndex, int dwNewLong);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int GetClassLong(IntPtr hwnd, int nIndex);
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
[DllImport("user32.dll", EntryPoint = "GetWindowLong", CharSet = CharSet.Auto)]
public static extern int GetWindowLong(HandleRef hWnd, int nIndex); [DllImport("user32.dll", EntryPoint = "SetWindowLong", CharSet = CharSet.Auto)]
public static extern IntPtr SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong); private const int WM_SYSCOMMAND = 0x0112;//点击窗口左上角那个图标时的系统信息
private const int SC_MOVE = 0xF010;//移动信息
private const int HTCAPTION = 0x0002;//表示鼠标在窗口标题栏时的系统信息
private const int WM_NCHITTEST = 0x84;//鼠标在窗体客户区(除了标题栏和边框以外的部分)时发送的消息
private const int HTCLIENT = 0x1;//表示鼠标在窗口客户区的系统消息
private const int SC_MAXIMIZE = 0xF030;//最大化信息
private const int SC_MINIMIZE = 0xF020;//最小化信息
2)定义鼠标事件
//窗体拖动
bool isMouseDown = false;
//Point cwpt = new Point(); //当前窗体位置
//Point cmpt = new Point(); //当前鼠标的按下位置
private void sysSet_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = true;
//cwpt = this.Location;
//cmpt = System.Windows.Forms.Control.MousePosition;
}
}
private void sysSet_MouseUp(object sender, MouseEventArgs e)
{
//if (WindowState == FormWindowState.Normal)
//{
// this.Location = cwpt;
// this.pnlMax.BackgroundImage = global::Cnwin.Apps.Properties.Resources.max12;
//}
//else
//{
// this.pnlMax.BackgroundImage = global::Cnwin.Apps.Properties.Resources.min16w;
//}
isMouseDown = false;
}
private void sysSet_MouseMove(object sender, MouseEventArgs e)
{
//int rangeX = 0, rangeY = 0; //计算当前鼠标光标的位移,让窗体进行相同大小的位移
//if (isMouseDown)
//{
// Point pt = System.Windows.Forms.Control.MousePosition;
// rangeX = cmpt.X - pt.X;
// rangeY = cmpt.Y - pt.Y;
// this.Location = new Point(cwpt.X - rangeX, cwpt.Y - rangeY);
//} //常量
int WM_SYSCOMMAND = 0x0112;
//窗体移动
int SC_MOVE = 0xF010;
int HTCAPTION = 0x0002; ReleaseCapture();
SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, ); if (WindowState == FormWindowState.Normal && isMouseDown)
{
this.pnlMax.BackgroundImage = global::Cnwin.Apps.Properties.Resources.max16;
}
else if (isMouseDown)
{
this.pnlMax.BackgroundImage = global::Cnwin.Apps.Properties.Resources.max12;
}
}
Winform 基础二 最小化 最大化 关闭 点击任务栏隐藏显示 点击鼠标左键移动窗体的更多相关文章
- delphi -----(去掉窗口最大化,最小化、关闭),主窗口,和子窗口之间的设置
一.去掉窗口最大化,最小化.关闭 borderIcons:biSystemMenu:false borderStyle:bsSizeable 二.主子窗口 主main: //调用子窗体procedur ...
- JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
转自<JS实现漂亮的窗口拖拽效果(可改变大小.最大化.最小化.关闭)>:http://www.jb51.net/article/73157.htm 这篇文章主要介绍了JS实现漂亮的窗口 ...
- iPhone手机解锁效果&&自定义滚动条&&拖拽--Clone&&窗口拖拽(改变大小/最小化/最大化/还原/关闭)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Delphi模拟最小化恢复关闭按纽
https://yq.aliyun.com/wenji/96083 本文讲的是Delphi模拟最小化恢复关闭按纽, 我们做多文档应用程序开发时,如果在主From中指定mainMenu时,在主菜单上右角 ...
- C# 隐藏最大化、最小化和关闭三个按钮
在Windows的窗体编程中,基本上每一个窗体都是一个最小化.最大化和关闭按钮的. 一.禁用最大化和最小化 对于最大化和最小化按钮,在C#窗体开发时,各一个属性来启用或禁用这两个按钮. this.Ma ...
- Delphi 自定义窗体(最大化、最小化、关闭、窗体的移动)
Uses ShellAPI; 1.//最小化procedure TForm1.btn1Click(Sender: TObject);var I, J, X, Y: Word;begin //第一种 ...
- QWidget 自带的最大化,最小化,关闭按键的设置
使用函数 setWindowFlags 参数: CustomizeWindowHint 去掉窗口所有自带按钮 Qt::CustomizeWindowHint | Qt::WindowCloseButt ...
- MFC的最大化,最小化,关闭
最大化.最小化和关闭按钮是窗口中最主要的元素.首先要说明,说他们是按钮其实是不准确的,按钮是一种窗口,而这三个组件根本就不是窗口,而是一个窗口常见的组成部分.出于习惯的原因,这里还是称呼他们为按钮. ...
- QDialog 添加最大化、最小化按钮和关闭按钮,并且要正常显示
在使用QDialog时,默认情况下只有“这是什么”和“关闭”按钮(不知道为什么QT要这么做),但是我们习惯有最大化和最小化按钮.本文介绍如何在该模式下如何设置. 新建一个QDialog工程,然后打开D ...
随机推荐
- Python 解决Python安装包时提示Unable to find vcvarsall.bat的问题
解决Python安装包时提示Unable to find vcvarsall.bat的问题 by:授客 QQ:1033553122 问题 Python安装包时,提示Unable to find v ...
- SQLite保存报错sqlite.SQLiteConstraintException: UNIQUE constraint failed: ······ code 1555
往数据库里保存数据的时候报错,用的afinal框架,明明在save操作之前执行了一遍deleteAll操作,还是报错. 百度了一下说报这种错有两种情况:一是定义的字段为not null ,插入时对应的 ...
- OneAPM大讲堂 | 基于图像质量分析的摄像头监控系统的实现
今天咱们要介绍的技术很简单,请看场景: 你在家里安装了几个摄像头想监视你家喵星人的一举一动,然而,就在喵星人准备对你的新包发动攻击的时候,图像突然模糊了.毕竟图像模糊了以后你就没法截图回家和喵当面对质 ...
- mybatis学习系列一(mybatis简介/使用)
1mybatis简介(1) 1.1工具:jbbc,jdbctemplate 功能简单,sql语句编写在java代码里面,硬编码高耦合的方式 1.2 框架:整体解决方案 1.2.1 Hibernate: ...
- LDAP Filter用法
#根据Pager过滤域用户 $pagers = gc D:\Operations\tmp\u.txt foreach ($p in $pagers) { $user = Get-ADUser -Fil ...
- CentOS7下用firewall-cmd控制端口与端口转发
1.firewalld 守护进程 2.控制端口/服务 3.伪装IP 4.端口转发 实现目标:服务器A和服务器B都是内网互通的,但是只有服务器A是有外网然后现在做端口转发实现服务器B能使用服务器A的外网 ...
- Matplotlib:plt.text()给图形添加数据标签
1.数据可视化呈现的最基础图形就是:柱状图.水平条形图.折线图等等: 在python的matplotlib库中分别可用bar.barh.plot函数来构建它们,再使用xticks与yticks(设置坐 ...
- windows7系统最大支持多少内存
目前Windows 7 64位版仅能使用最大为192GB内存. 这是各个版本的具体数据:64位的Windows 7家庭普通版最高可支持8GB内存,家庭高级版最高可支持16GB内存,64位的Win ...
- 解决pycharm下代码报错的问题
file-----settings------project:Pythonstudy------project structure-----选择要导入的文件并点击OK
- Hbase-2.0.0_01_安装部署
该文章是基于 Hadoop2.7.6_01_部署 进行的 1. 主机规划 主机名称 IP信息 内网IP 操作系统 安装软件 备注:运行程序 mini01 10.0.0.11 172.16.1.11 C ...