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 ...
随机推荐
- proxy_buffer代理缓冲区
目录 一:代理缓冲区 1.代理缓存区模块介绍 二:案例 1.配置文件 2.测试 3.重启 4.lb01服务器(负载均衡) 5.网址配置文件 6.测试 7.重启 8.DNS解析 9.网址测试 10.日志 ...
- iptables的概念与底层原理(详解)
目录 一:iptables 1.iptables简介 2.什么是防火墙? 3.防火墙种类 二:iptables基本介绍 1.解析内容 三:iptables流程(讲解) 1.流入本机 2.解析(流入本机 ...
- linux字符编码防止乱码
一:linux字符编码 en_US.UTF-8 : 美式英文,utf-8 zh_CN.UTF-8 临时优化 export LANG=zh_CN.UTF-8 : 设置编码 永久优化 vim /etc/l ...
- arduino物联网学习
arduino物联网学习 目录 arduino物联网学习 20200215 OLED屏幕使用教程 材料: 软件 代码注释 完整代码 Arduino IDE 开发 ESP-01S/ESP-01物联网实战 ...
- kicad6 封装库的管理
kicad6 封装库的管理 kicad6 的封装编辑器有很多莫名其妙的地方, 让人在第一次用的时候摸不着头脑. 在下面稍微总结一下封装库的操作 1. 封装库的创建 选择 文件 -> 新建库 有两 ...
- 「IOI2009」旅行商
题目传送门 首先,看到这道题感觉就像dp(然鹅没什么用). 一个美好的设想 假如没有两个展销会在同一天开展:前途光明 暴力dp,复杂度o(\(n^2\)). 没有同一天的展销会 暴力dp慢,是因为本质 ...
- Log4j2日志技术总结
前言 现在流行是SLF4j和Log4j2组合的日志技术,但为了日志技术归类,故前因后果都将做一下介绍. 市场上流行的日志框架 JUL java util logging Java开发团队开发,Jdk原 ...
- Mysql8.0主从配置
环境Centos7.6 ,mysql8.0 Mysql主从配置 1.1 配置环境: 本人在vm下做的实验,linux版本是centos的7.0版本,然后Mysql版本为此时较新的8.0.13版本.做最 ...
- JSP中的请求转发与重定向
在说请求转发和重定向之前,得了解下JSP九大内置对象中的response和request response:将服务器端数据发送到客户端,可通过在客户端浏览器中显示,用户浏览页面的重定向以及在客户端创建 ...
- JSP页面乱码解决
1. tomcat 设置端口处加上 URIEncoding="UTF-8" 2. tomcat 的bin文件夹下的catalina.bat中如下位置加上如下编码:-Dfile.en ...