/// <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# 窗体相关操作(最大化/最小化/关闭/标题栏)的更多相关文章

  1. Electron 无边框窗口最大化最小化关闭功能

    Electron 无边框窗口最大化最小化关闭功能 目的 实现无边框窗口,并添加最大化最小化和关闭功能 前提 了解Electron 主进程和渲染进程的通讯 了解 BrowserWindow相关功能 操作 ...

  2. Qt 窗口操作函数(置顶、全屏,最大化最小化按钮设置等)

    一.窗口置顶 与 取消置顶 void MainWindow::on_windowTopButton_clicked() { if (m_flags == NULL) { m_flags = windo ...

  3. PyQt:无边框自定义标题栏及最大化最小化窗体大小调整

    环境 Python3.5.2 PyQt5 陈述 隐藏掉系统的控制栏,实现了自定义的标题控制栏,以及关闭/最大化/最小化的功能,自由调整窗体大小的功能(跟随一个大佬学的),代码内有详细注释 只要把Mai ...

  4. 【转】ubuntu 12.04 LTS将关闭最大化最小化移动到右上角

    原文网址:http://www.4byte.cn/learning/114801.html ubuntu 12.04 LTS将关闭最大化最小化移动到右上角   还是按下“ALT +F2”组合键,输入g ...

  5. C#程序实现窗体的最大化/最小化

    C#程序实现窗体的最大化/最小化 http://blog.csdn.net/jiangqin115/article/details/41251215 private void button1_Clic ...

  6. Q窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)

    //Qt主窗口没有最小化,最大化按钮且最大化显示  int main(int argc, char *argv[]) { QApplication a(argc, argv); TestQtForWi ...

  7. delphi ,1)控件根据窗口大小,一直居中显示 2)显示最大化最小化按钮控件

    一.控件根据窗口大小,一直居中显示 1)onResize:当窗体尺寸改变时发生 例子:如何使控件随窗口的放大和缩小动态改变自己的大小,使控件“保存.返回”在窗口变大变小中随着变. 在Panel调用 p ...

  8. layer满屏/禁止最大化最小化 可以做选择框使用

    1.layer弹窗最大化 var index=layer.open(); layer.full(index); 2.layer禁止最大化最小化 layer.open( [ type:2, title: ...

  9. C#winform如何主窗口最大化最小化默认大小

    this.WindowState = FormWindowState.Minimized; bool b = true; private void button2_Click(object sende ...

随机推荐

  1. clickhouse-mysql数据同步

    clickhouse版本:22.1.2.2 1.Mysql引擎(不推荐) CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] EN ...

  2. Spring系列9:基于注解的Spring容器配置

    写在前面 前面几篇中我们说过,Spring容器支持3种方式进行bean定义信息的配置,现在具体说明下: XML:bean的定义和依赖都在xml文件中配置,比较繁杂. Annotation-based ...

  3. dfs时间复杂度分析

    前言 之前一直想不明白dfs的时间复杂度是怎么算的,前几天想了下大概想明白了,现在记录一下. 存图方式都是链式前向星或邻接矩阵.主要通过几道经典题目来阐述dfs时间复杂度的计算方法. $n$是图中结点 ...

  4. 使用gdi+实时绘制picturebox(画个叉)

    private void DrawReticle(System.Drawing.Point pt, int size)//画一个透明的前景图片上画十字 { Bitmap bmp = new Bitma ...

  5. 「CTSC2006」歌唱王国

    概率生成函数\(g(x)=\sum_{i\geq 0}t_ix^i\),\(t_i\)表示结果为\(i\)的概率 令\(f(x)\)表示i位表示串结束时长度为i的概率,\(G(x)\)表示i位表示串长 ...

  6. bom-scroll

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. linux下格式化json文件数据

    一.使用 python -m json.tool cat test.json | python -m json.tool 二.jq格式化 在web 2.0时代json这种直观.灵活.高效数据格式基本已 ...

  8. ubuntu php连接oracle数据库

    转载请注明来源:https://www.cnblogs.com/hookjc/ 需要将数据库从mysql迁移到oracle.下了个oracle xe在ubuntu下折腾了好久,都只能启动1521的侦听 ...

  9. 利用系统APP实现导航---By张秀清

    苹果系统本身自带一个地图APP,但是功能并不是很强大,但是一些简单的导航功能还是能做出来的,下面贴上我的代码 // // ViewController.m // 系统APP导航 // // Creat ...

  10. Lab: Web shell upload via Content-Type restriction bypass

    首先上传一个正常头像. 之后,上传木马文件,并抓包 POST /my-account/avatar HTTP/1.1 Host: ac4f1f7d1eaa6cd2c0d80622001b00f9.we ...