删除Windows窗体中的标题栏

lkj*_*lkj 69 .net c# winforms

如何删除窗体顶部的蓝色边框?(我完全不知道它的名字.)

小智 127

您可以FormBorderStyle在设计器或代码中将Property设置为none:

this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
Run Code Online (Sandbox Code Playgroud)

  • 有一个错字.这是'FormBorderStyle':) (3认同)

Nik*_* G. 70

如果Blue Border thats on top of the Window Form你的意思是标题栏,将Forms ControlBox属性设置为falseText属性为空字符串("").

这是一个片段:

this.ControlBox = false;
this.Text = String.Empty;
Run Code Online (Sandbox Code Playgroud)

  • 您的解决方案优于将边框样式设置为无,因为...它使边框保持完整:) +1 (8认同)
  • 这个解决方案在 Windows 10 中看起来真的很糟糕——“隐藏”的标题栏没有完全消失——在窗口顶部留下一个“凸起”。我认为这是由 Windows 10 细窗口边框引起的。我还没有找到解决这个问题的方法。看起来我坚持走 **FormBorderStyle.None** 路线。 (3认同)
  • 使用上述建议将 FormBorderStyle 设置为 Sizing 是可行的,但请注意,Windows 10 在客户端矩形之外的窗口顶部添加了一个难看的栏,该栏似乎是用于垂直调整窗口大小的抓取区域/调整大小边框(它似乎顶部边框渲染在可见表单边框内,其他边框渲染在 o_O 之外。 (2认同)

cod*_*fun 23

还要将这段代码添加到表单中,以使其可以拖动.

只需在构造函数之前添加它(调用InitializeComponent()的方法


private const int WM_NCHITTEST = 0x84;
private const int HTCLIENT = 0x1;
private const int HTCAPTION = 0x2;

///
/// Handling the window messages
///
protected override void WndProc(ref Message message)
{
    base.WndProc(ref message);

    if (message.Msg == WM_NCHITTEST && (int)message.Result == HTCLIENT)
        message.Result = (IntPtr)HTCAPTION;
}
Run Code Online (Sandbox Code Playgroud)

该代码来自:https://jachman.wordpress.com/2006/06/08/enhanced-drag-and-move-winforms-without-having-a-titlebar/

现在要摆脱标题栏但仍然有一个边框组合来自其他响应的代码:

this.ControlBox = false;

this.Text = String.Empty;

用这一行:

this.FormBorderStyle = FormBorderStyle.FixedSingle;


将这3行代码放入表单的OnLoad事件中,您应该有一个漂亮的"浮动"表单,可以使用细边框拖动(如果您不需要边框,请使用FormBorderStyle.None).


Max*_*lov 10

FormsBorderStyle表单集None.

如果这样做,由您决定如何实现窗口的拖放功能.


Jor*_*Dob 10

 Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Run Code Online (Sandbox Code Playgroud)