Change the style of WinForm border?

前端 未结 4 1169

Is it possible to change the style of a WinForm border? I know that if the border is removed, it takes away the functionality to resize the program. Therefore is there a way

4条回答
  •  梦谈多话
    2021-01-14 05:58

    First write this in the InitializeComponent():

    public const int WM_NCLBUTTONDOWN = 0xA1;
    public const int HT_RIGHT = 0xB;
    
    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    
    [DllImport("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
    [DllImport("user32.dll")]
    public static extern bool ReleaseCapture();
    
    this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Resize_Form);
    

    Then, use a method similar to this. In this case, my form is only resizable from the right side, but should be easy to make it resize from any side:

        private void Resize_Form(object sender, MouseEventArgs e)
        {
            if ((e.Button == MouseButtons.Left) && (MousePosition.X >= this.Location.X + formWidth - 10))
            {
                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.SizeWE;
                ReleaseCapture();
                SendMessage(Handle, WM_NCLBUTTONDOWN, HT_RIGHT, 0);
                formWidth = this.Width;
            }
        }
    

提交回复
热议问题