• C# 无边框窗体移动和改变大小的实现


    自己给软件做的皮肤,将窗体设为无边框后,想要其具有正常窗体的移动和改变大小功能,以下代         码可以实现。。。。
    
    //需添加using System.Runtime.InteropServices;
    [DllImport("user32.dll")]  
    public static extern bool ReleaseCapture();
    [DllImport("user32.dll")]
    public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
            
    //常量
    public const int WM_SYSCOMMAND = 0x0112;
            
    //窗体移动
    public const int SC_MOVE = 0xF010;
    public const int HTCAPTION = 0x0002; 
    
    //改变窗体大小
    public const int WMSZ_LEFT = 0xF001;
    public const int WMSZ_RIGHT = 0xF002;
    public const int WMSZ_TOP = 0xF003;
    public const int WMSZ_TOPLEFT = 0xF004;
    public const int WMSZ_TOPRIGHT = 0xF005;
    public const int WMSZ_BOTTOM = 0xF006;
    public const int WMSZ_BOTTOMLEFT = 0xF007;
    public const int WMSZ_BOTTOMRIGHT = 0xF008;
    声明完函数和定义完这些常量后,就是在事件里面具体的实现了。。。
    //窗体移动
    在要实现的控件的MouseDown事件中添加以下代码:
    private void panel_title_bar_MouseDown(object sender, MouseEventArgs e)
    {
            ReleaseCapture();
            SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
    }
    //窗体大小的改变
    同理在控件的MouseDown事件中添加以下代码:
    private void panel_bottom_MouseDown(object sender, MouseEventArgs e)
    {
           ReleaseCapture();
           SendMessage(this.Handle, WM_SYSCOMMAND, WMSZ_BOTTOM, 0);
    }
    其中的WMSZ_BOTTOM为要改变的方向,在常量中8个方向都已经定义,其它方向换用对应常量即可。好了,可以试下效果,看是不是能移动和改变大小了,哈哈。。。
     
    再加一条,就是无边框最大化后会全屏显示,只要在窗体加载中加下面这句来限制最大化窗体大小即可:
    this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width,                                                           
    Screen.PrimaryScreen.WorkingArea.Height); 同理限定最小的也可以在窗体加载中加入以下语句:
    this.MinimumSize = new Size(this.Width, this.Height);//窗体改变大小时最小限定在初始化大小
  • 相关阅读:
    回文字符串问题
    Linux添加nfs共享存储盘
    解读nginx配置
    制作自己的nginx rpm包
    linux编译安装时常见错误解决办法
    redis单机及集群安装
    nginx ssl
    vsftp配置详解
    Linux-文件系统的简单操作
    Linux-Vim编辑器
  • 原文地址:https://www.cnblogs.com/qq1223558/p/3229322.html
Copyright © 2020-2023  润新知