c# 窗体相关操作(最大化/最小化/关闭/标题栏)
/// <summary>
/// 窗体跟随鼠标移动的标记
/// </summary>
private bool normalmoving = false;
/// <summary>
/// 最大化窗体跟随鼠标Normal和移动的标记
/// </summary>
private bool maxmoving = true;
/// <summary>
/// 临时存储上一次鼠标位置
/// </summary>
private Point oldMousePosition;
/// <summary>
/// 右侧最大化/最小化/关闭按钮的总宽度
/// </summary>
int ritghtbuttonslength = 180;
关闭按钮相关操作
#region 页面关闭的相关操作
private void picBoxMainClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void picBoxMainClose_MouseEnter(object sender, EventArgs e)
{
this.picBoxMainClose.Image =global::LocDevelopDesClient.Properties.Resources.close_mainMouse;
}
private void picBoxMainClose_MouseLeave(object sender, EventArgs e)
{
this.picBoxMainClose.Image = global::LocDevelopDesClient.Properties.Resources.close_main;
}
#endregion
窗体最大化相关操作
#region 窗体最大化的相关操作
//包括标题栏双击窗口的变化及页面最大化图表点击
private void picBoxMaxSize_Click(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Normal;
}
else if (this.WindowState == FormWindowState.Normal)
{
this.MaximumSize = new Size(Screen.FromControl(this).WorkingArea.Width, Screen.FromControl(this).WorkingArea.Height);
this.WindowState = FormWindowState.Maximized;
}
} private void picBoxMaxSize_MouseEnter(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Normal)
{
this.picBoxMaxSize.Image = global::LocDevelopDesClient.Properties.Resources.maxSize_mouse;
}
else if (this.WindowState == FormWindowState.Maximized)
{
this.picBoxMaxSize.Image = global::LocDevelopDesClient.Properties.Resources.normal_mouse;
} } private void picBoxMaxSize_MouseLeave(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Normal)
{
this.picBoxMaxSize.Image = global::LocDevelopDesClient.Properties.Resources.maxSize;
}
else if (this.WindowState == FormWindowState.Maximized)
{
this.picBoxMaxSize.Image = global::LocDevelopDesClient.Properties.Resources.normal;
}
}
#endregion
窗体最小化相关操作
#region 窗体最小化的相关操作
private void picBoxMinSize_Click(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Normal || this.WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Minimized;
}
}
private void picBoxMinSize_MouseEnter(object sender, EventArgs e)
{
this.picBoxMinSize.Image = global::LocDevelopDesClient.Properties.Resources.minsize_mouse;
} private void picBoxMinSize_MouseLeave(object sender, EventArgs e)
{
this.picBoxMinSize.Image = global::LocDevelopDesClient.Properties.Resources.minsize1;
}
#endregion
标题栏相关操作
#region 主页面标题栏的相关操作 private void palTitle_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
oldMousePosition = new Point(-e.X, -e.Y);
normalmoving = true;
}
} private void palTitle_MouseUp(object sender, MouseEventArgs e)
{
maxmoving = true;
//pnlFirstMenu.Cursor = Cursors.Default;
if (normalmoving)
{
normalmoving = false;
}
}
private void palTitle_MouseMove(object sender, MouseEventArgs e)
{
//如果leftlag为true则进行移动
if (!normalmoving) return;
if (this.WindowState == FormWindowState.Maximized && e.Button == MouseButtons.Left && maxmoving)
{
this.WindowState = FormWindowState.Normal;
//当窗体最大时,鼠标点击的位置比例
double bili = e.X * 1.0 / Screen.PrimaryScreen.Bounds.Width;
//如果点击位置太靠右,则窗体normal后,鼠标会在右侧按钮上方
//计算缩小后数据离右侧的距离
double rightlength = (1.0 - bili) * this.Width;
int x = 0;
if (rightlength < ritghtbuttonslength)
{
x = (int)(e.X - (bili * this.Width) + ritghtbuttonslength - rightlength);
//更改oldMousePosition的位置
oldMousePosition.X += (int)(e.X - (bili * this.Width) + ritghtbuttonslength - rightlength);
}
else
{
x = (int)(e.X - (bili * this.Width));
//更改oldMousePosition的位置
oldMousePosition.X += (int)(e.X - (bili * this.Width));
}
this.Location = new Point(x, 0); }
else if (e.Button == MouseButtons.Left)
{
{
Point mouseSet = MousePosition;
mouseSet.Offset(oldMousePosition.X, oldMousePosition.Y); //设置移动后的位置
Location = mouseSet;
if (MousePosition.Y <= 0)
{
this.MaximumSize = new Size(Screen.FromControl(this).WorkingArea.Width, Screen.FromControl(this).WorkingArea.Height);
this.WindowState = FormWindowState.Maximized;
maxmoving = false;
}
}
}
}
#endregion
c# 窗体相关操作(最大化/最小化/关闭/标题栏)的更多相关文章
- Electron 无边框窗口最大化最小化关闭功能
Electron 无边框窗口最大化最小化关闭功能 目的 实现无边框窗口,并添加最大化最小化和关闭功能 前提 了解Electron 主进程和渲染进程的通讯 了解 BrowserWindow相关功能 操作 ...
- Qt 窗口操作函数(置顶、全屏,最大化最小化按钮设置等)
一.窗口置顶 与 取消置顶 void MainWindow::on_windowTopButton_clicked() { if (m_flags == NULL) { m_flags = windo ...
- PyQt:无边框自定义标题栏及最大化最小化窗体大小调整
环境 Python3.5.2 PyQt5 陈述 隐藏掉系统的控制栏,实现了自定义的标题控制栏,以及关闭/最大化/最小化的功能,自由调整窗体大小的功能(跟随一个大佬学的),代码内有详细注释 只要把Mai ...
- 【转】ubuntu 12.04 LTS将关闭最大化最小化移动到右上角
原文网址:http://www.4byte.cn/learning/114801.html ubuntu 12.04 LTS将关闭最大化最小化移动到右上角 还是按下“ALT +F2”组合键,输入g ...
- C#程序实现窗体的最大化/最小化
C#程序实现窗体的最大化/最小化 http://blog.csdn.net/jiangqin115/article/details/41251215 private void button1_Clic ...
- Q窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)
//Qt主窗口没有最小化,最大化按钮且最大化显示 int main(int argc, char *argv[]) { QApplication a(argc, argv); TestQtForWi ...
- delphi ,1)控件根据窗口大小,一直居中显示 2)显示最大化最小化按钮控件
一.控件根据窗口大小,一直居中显示 1)onResize:当窗体尺寸改变时发生 例子:如何使控件随窗口的放大和缩小动态改变自己的大小,使控件“保存.返回”在窗口变大变小中随着变. 在Panel调用 p ...
- layer满屏/禁止最大化最小化 可以做选择框使用
1.layer弹窗最大化 var index=layer.open(); layer.full(index); 2.layer禁止最大化最小化 layer.open( [ type:2, title: ...
- C#winform如何主窗口最大化最小化默认大小
this.WindowState = FormWindowState.Minimized; bool b = true; private void button2_Click(object sende ...
随机推荐
- kubernetes之kubeadm 安装kubernetes 高可用集群
1. 架构信息 系统版本:CentOS 7.6 内核:3.10.0-957.el7.x86_64 Kubernetes: v1.14.1 Docker-ce: 18.09.5 推荐硬件配置:4核8G ...
- Linux 总结
查看端口 lsof -i:8000 查看进程 ps -ef | grep python netstat -tunlp |grep 端口号 拷贝 cp 文件 生成文件名 做软连接找到目标文件目录 ...
- plsql 数据库事件触发器
--4.数据库事件触发器 需要超管的权限 /* 数据库事件触发器有数据库级和模式级两种. 前者定义在整个数据库上,触发事件是数据库事件,如数据库的启动.关闭,对数据库的登录或退出. 后者定义在模式上, ...
- python pyautogui
使用pyautogui随机调用图库里的一张照片设置为壁纸,每天定时执行 代码 import time import pyautogui import random pyautogui.keyDown( ...
- CentOS7安装部署Prometheus+Grafana (转)
转自:https://www.jianshu.com/p/967cb76cd5ca 作为监控系统的后起之秀,prometheus的安装可谓非常简单,不需要第三方的依赖(数据库.缓存.PHP之类的).下 ...
- 揭秘CPU制造全过程
转载请注明来源:https://www.cnblogs.com/hookjc/ PCPOP 众所周知,CPU是计算机的心脏,包括运算部件和控制部件,是完成各种运算和控制的核心,也是决定计算机性能的最重 ...
- CSS 3D的魅力
用户1093975发表于Web项目聚集地订阅 151 在这篇文章中: 前言: demo1 demo2 结语: 本文介绍了CSS来实现3D效果,并且有详细代码和解释.建议大家只字不差的阅读.本文的作者是 ...
- 云端iclound使用-陈棚
使用NSmetadataQuery查询文档,增加,删除,编辑 界面设计完成后效果如图: 程序清单:FKDiary.h @interface FKDiary : UIDocument @property ...
- 编译安装haproxy
一.安装lua环境 1.1 安装依赖包 [root@centos7 ~]# yum install gcc readline-devel 1.2 下线lua源码包并解压 [root@centos7 ~ ...
- CentOS更新VMware Tools及设置共享文件夹
CentOS设置共享文件夹 设置共享文件夹 点击虚拟机->设置 2. 打开虚拟机设置->选项->共享文件夹->总是启用->添加 3. 点击下一步创建主机路径并命名 4. ...