C# 是否更改WinForm边框的样式?

C# 是否更改WinForm边框的样式?,c#,winforms,coding-style,resize,border,C#,Winforms,Coding Style,Resize,Border,是否可以更改WinForm边框的样式?我知道,如果删除边框,它将取消调整程序大小的功能。因此,有没有一种方法可以改变它的样式,但保持它的大小可调?我认为没有一种直接的方法可以做到这一点 但是,可以将窗体边框样式设置为“无”。 并在表单中实现大小调整(我认为这并不困难)您所寻求的并不简单,因为边框是由操作系统绘制的。然而,CodePlex上有一个库,它确实可以实现这一点 附言:我还没有测试过 希望您已将FormBorderStyle设置为None首先在InitializeComponent()中

是否可以更改WinForm边框的样式?我知道,如果删除边框,它将取消调整程序大小的功能。因此,有没有一种方法可以改变它的样式,但保持它的大小可调?

我认为没有一种直接的方法可以做到这一点

但是,可以将窗体边框样式设置为“无”。
并在表单中实现大小调整(我认为这并不困难)

您所寻求的并不简单,因为边框是由操作系统绘制的。然而,CodePlex上有一个库,它确实可以实现这一点

附言:我还没有测试过


希望您已将FormBorderStyle设置为None

首先在InitializeComponent()中写入此项:

然后,使用类似的方法。在这种情况下,我的表单只能从右侧调整大小,但应该很容易从任意一侧调整大小:

    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;
        }
    }

调整大小可能并不简单,因为当您将鼠标移动到窗体边缘时,光标不再更改为大小光标。我可以在窗体上放置一个面板吗,如上图所示。然后当有人调整面板大小时,让它调整我的窗体大小?我可以将面板锚定到顶部、底部、左侧和右侧,使其始终与窗体大小相同。你知道我可以用什么代码来做这件事吗?@MrRoys-改变光标将是最容易的事。@Dodi300-你可以按照你的建议去做。但是你不需要。您可以在表单上快速绘制一个矩形,并在表单的MouseMove事件中检查鼠标位置是否与矩形重叠。如果重叠,请更改光标并执行调整表单大小的逻辑。请给出一些示例代码?如何调整窗体的大小?谢谢
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);
    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;
        }
    }