栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

拖动无边框窗体

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

拖动无边框窗体

一、说明

在设置窗体属性的时候,如果把FormBorderStyle属性设置为None,即主窗体为无边框窗体,

无边框窗体是无法拖动的。那么如何实现无边框窗体的拖动呢,可借助Windows操作系统提供的

API函数。

二、实现过程

using System.Runtime.InteropServices;

在类中定义如下变量和声明方法

public const int WM_SYSCOMMAND =0x0112;//该变量表示向Windows发送消息的类型

public const int SC_MOVE = 0xF010;//该变量表示发送的附加消息

public const int HTCAPTION =0x0002; //该变量表示发送的附加消息

//用来释放被当前线程中某个窗口捕获的光标

[DllImport("user32.dll")]

public static extern bool ReleaseCapture();

//向指定的窗体发送Windows消息

[DllImport("user32.dll")]

public static extern bool SendMessage(InPtr hwdn,int wMsg,int mParam,int lParam);

三、调用过程

比如某个窗体FormMain中,选择拖动panel1时拖动窗体。

private void panel1_MouseDown(object sender,MouseEventArgs e)

{

        ReleaseCapture();

        //向Windows发送拖动窗体的消息

        SendMessage(this.Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977129.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号