C# winform 无边圆角窗体美化,整个窗体都是由控件组成,
如何让无边圆角窗体,按下鼠标通过拖控件来实现拖动无边窗体呢

解决方案 »

  1.   

    拖动panel来实现        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;        private void panel1_MouseDown_1(object sender, MouseEventArgs e)
            {
                ReleaseCapture();
                SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);//
            }
      

  2.   

    还是不能实现。
    我的窗体设计是这样的,先把窗体设成无边,然后在窗体上涌tableLayoutPanel布局四角四边(通过panel或picturebox设置四角四边的图片), 中间用panel容器装其他内容并用系统默认颜色填充。
    不知道为什么输入框会透明,
    更重要的是也不能拖动窗体,有什么办法拖动窗体呢?
      

  3.   

    不用管鼠标按下释放
    只响应 hit test 事件, 返回对应的枚举值即可.
      

  4.   

    当你在窗口上按下鼠标 _移动窗口_ 时,
    有2点需要清楚:
    1. 谁给你移动的窗口
    2. 在窗口内哪些部位按下鼠标会引发移动窗口操作是 windows 的窗口管理器给你移动的,
    但是移动区域是可以由你来定义的,
    默认为标题栏, 要改写, 则需要响应 WM_NCHITTEST 消息则这个消息处理内, 得到当前鼠标位置, 计算, 返回对应值即可.关于这个消息的定制, 搜索这个消息名称就能找到不少例子代码.