.NET隐藏标题栏但保留边框

时间:2016-01-31 12:59:33

标签: c# .net vb.net winforms

我想知道如何隐藏表单的标题栏但保留原始边框,例如Dropbox: screenshot

提前致谢!

3 个答案:

答案 0 :(得分:6)

FormBorderStyle设置为FormBorderStyle.SizableFormBorderStyle.SizableToolWindow并将Text设置为空字符串,将ControlBox设置为false

请注意FixedToolWindow无法正常工作,它会删除边框。如果您不希望它变得相当大,请使用SizableToolWindow并将其添加到表单的代码隐藏中(添加两种语言,因为您没有指定并用两者标记问题):

在vb.net中:

Protected Overrides Sub WndProc(ByRef message As Message)               
    If message.Msg = &H84 Then ' WM_NCHITTEST
        message.Result = CType(1, IntPtr)
        Return
    End If    
    MyBase.WndProc(message)
End Sub

在C#中:

protected override void WndProc(ref Message message)
{
    if (message.Msg == 0x0084) // WM_NCHITTEST
        message.Result = (IntPtr)1;   
    else base.WndProc(ref message);
}

答案 1 :(得分:0)

这是一种简单的方法:

this.ControlBox = false;
this.Text = string.Empty;

如果将窗体设计为弹出对话框,则可能需要添加以下行:

this.ShowInTaskBar = false;

这可以使表单不显示在任务栏中。

答案 2 :(得分:-2)

// 3rd option (C#)
protected override CreateParams CreateParams
{
    get
    {
        int WS_DLGFRAME = 0x400000;
        CreateParams result = base.CreateParams;
        result.Style &= ~WS_DLGFRAME;
        return result;
    }
}