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