当前位置: 首页 > news >正文

买邮箱的网站最近新闻热点国家大事

买邮箱的网站,最近新闻热点国家大事,58同城武汉网站建设,哪里教做网站的Winform无边框窗体拖动功能 前言正文1、设置无边框模式2、无边框窗体拖动方法1、通过Panel控件实现窗体移动2、通过窗体事件实现窗体移动3、调用系统API实现窗体移动4、重写WndProc()实现窗体移动 前言 在本文中主要介绍 如何将窗体设置成无边框模式、以及实现无边框窗体拖动功…

Winform无边框窗体拖动功能

  • 前言
  • 正文
    • 1、设置无边框模式
    • 2、无边框窗体拖动方法
      • 1、通过Panel控件实现窗体移动
      • 2、通过窗体事件实现窗体移动
      • 3、调用系统API实现窗体移动
      • 4、重写WndProc()实现窗体移动

前言

在本文中主要介绍 如何将窗体设置成无边框模式、以及实现无边框窗体拖动功能的几种方法。

正文

1、设置无边框模式

选中要去除边框的窗体,按F4调出其属性面板,在属性面板中找到 FormBorderStyle ,并选择 None,即可将窗体设置成无边框模式;默认是无法随意拖动的,也没有最大化最小化关闭按钮。
在这里插入图片描述

2、无边框窗体拖动方法

1、通过Panel控件实现窗体移动

  1. 实现方法:在窗体的头部添加 Panel 控件,通过 Panel 的 MouseDown、MouseMove 事件实现窗体移动;

  2. 实现原理:直接通过修改窗体位置从而达到移动窗体的效果;

  3. 具体代码

    		private Point mPoint;//定义一个位置信息Point用于存储鼠标位置/// <summary>/// 鼠标按下/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void uPanel1_MouseDown(object sender, MouseEventArgs e){mPoint = new Point(e.X, e.Y);}/// <summary>/// 鼠标移动/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void uPanel1_MouseMove(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Left){this.Location = new Point(this.Location.X + e.X - mPoint.X, this.Location.Y + e.Y - mPoint.Y);}}
    
  4. 实现效果
    在这里插入图片描述

2、通过窗体事件实现窗体移动

  1. 实现方法:通过窗体MouseDown、MouseMove、MouseUp事件实现窗体移动;

  2. 具体代码

    		//通过窗体MouseDown、MouseMove、MouseUp事件实现窗体移动Point point; //鼠标按下时的点bool isMoving = false;//标识是否拖动private void Form1_MouseDown(object sender, MouseEventArgs e){point = e.Location;//按下的点isMoving = true;//启动拖动}private void Form1_MouseMove(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Left && isMoving){Point pNew = new Point(e.Location.X - point.X, e.Location.Y - point.Y);//Location = new Point(Location.X + pNew.X, Location.Y + pNew.Y);Location += new Size(pNew);}}private void Form1_MouseUp(object sender, MouseEventArgs e){isMoving = false;//停止}
    
  3. 实现效果
    在这里插入图片描述

3、调用系统API实现窗体移动

  1. 实现方法:利用 windows 应用程序接口 Windows API 实现窗体移动;

  2. 实现原理:当鼠标左键按下时,让系统认为是在标题栏按下的;

  3. 具体代码

    using System.Runtime.InteropServices;//调用系统API[DllImport("user32.dll")]public static extern bool ReleaseCapture();[DllImport("user32.dll")]public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);private const int VM_NCLBUTTONDOWN = 0XA1;//定义鼠标左键按下public const int HTCAPTION = 0x0002; //HTCAPTION=2 鼠标在标题栏中/// <summary>/// 鼠标按下事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void Form1_MouseDown(object sender, MouseEventArgs e){//为当前应用程序释放鼠标捕获ReleaseCapture();//发送消息 让系统误以为在标题栏上按下鼠标SendMessage((IntPtr)this.Handle, VM_NCLBUTTONDOWN, HTCAPTION, 0);}
    
  4. 注意事项:需要引入命名空间 using System.Runtime.InteropServices;

  5. 实现效果在这里插入图片描述

4、重写WndProc()实现窗体移动

  1. 实现方法:通过重写 WndProc() 方法实现窗体移动;

  2. 实现原理:将鼠标在客户区按下的消息更改为在非客户区的标题栏按下;

  3. 具体代码

    		//重写WndProc://原理:将鼠标在客户区按下的消息更改为在非客户区的标题栏按下protected override void WndProc(ref Message m){switch (m.Msg){case 0x0201://鼠标左键按下的消息m.Msg = 0x00A1;//更改消息为非客户区按下鼠标m.LParam = IntPtr.Zero;//默认值m.WParam = new IntPtr(2);//鼠标放在标题栏内break;}base.WndProc(ref m);}
    
  4. 实现效果
    在这里插入图片描述

http://www.dt0577.cn/news/12132.html

相关文章:

  • 网站建设时如何选择合适的服务器百度指数下载手机版
  • 软件外包公司主营业务宁波seo网站排名
  • 做任务拿赏金的网站线上推广的方法
  • 沧州网站建设优化站长统计app网站
  • 网页制作培训学院重庆seo入门教程
  • 网站建设与运营课程总结免费网站推广网站破解版
  • 网站建设遇到问题解决方案江西省seo
  • 上海网站建设解决方案免费刷推广链接的网站
  • hexo建设网站舆情分析网站免费
  • 邓州市网站建设软文网
  • html网站开发论文seo百度推广
  • 常见的网络广告枣庄网络推广seo
  • 做拍客哪个网站好廊坊seo建站
  • 做网站开公司seo学徒
  • wordpress remove_query_arg专业seo培训学校
  • 0464信息网百度推广seo优化
  • 做网站的素材包含哪些专业网页设计和网站制作公司
  • 一个网站不兼容ie怎么做数字营销工具
  • 青苹果乐园免费观看电视剧高清优化网站页面
  • 做百度推广 建自己的网站百度一下你就知道搜索引擎
  • 毕业设计做课程网站好关键词推广效果分析
  • 商丘做网站seo百度游戏中心
  • 东莞公司注册代办一个网站可以优化多少关键词
  • AAP网站开发需要多少钱seo推广的特点
  • 怎么在互联网做网站html网页制作app
  • 做影视网站如何加速免费的html网站
  • 怎么建网站做网络推广费计入什么科目
  • .net网站空间个人网页制作成品
  • 昆明网站建设流程莆田百度seo公司
  • 如何做家教网站百度搜索