簡體   English   中英

如何創建帶邊框的表單,但沒有標題欄? (比如Windows 7上的音量控制)

[英]How to create a form with a border, but no title bar? (like volume control on Windows 7)

在Windows 7中,音量混合器窗口具有特定樣式,具有粗糙透明邊框,但沒有標題欄。 如何在winforms窗口中重新創建窗口樣式?

體積混合器

我嘗試將Text設置為string.Empty,將ControlBox設置為false,這將刪除標題欄,但邊框也會消失:

邊界消失了

form.Text = string.Empty;
form.ControlBox = false;
form.FormBorderStyle = FormBorderStyle.SizableToolWindow;

對於固定大小的窗口,您仍應使用FormBorderStyle.SizableToolWindow ,但您可以覆蓋窗體的WndProc以忽略非客戶端命中測試(用於切換到大小調整游標):

protected override void WndProc(ref Message message)
{
    const int WM_NCHITTEST = 0x0084;

    if (message.Msg == WM_NCHITTEST)
        return;

    base.WndProc(ref message);
}

如果要真正強制執行大小,還可以在表單MinimumSize設置為MaximumSize

因為“這個編輯旨在解決帖子的作者,並且沒有任何意義作為編輯。它應該被寫成評論或答案。” 我將克里斯回答的編輯作為新答案。

代碼的答案如上所述 - 除了它還可以防止任何客戶區鼠標事件發生。 您需要返回1(如在HTCLIENT中)來修復它。

protected override void WndProc(ref Message message)
{
    const int WM_NCHITTEST = 0x0084;
    const int HTCLIENT = 0x01;

    if (message.Msg == WM_NCHITTEST)
    {
        message.Result = new IntPtr(HTCLIENT);
        return;
    }

    base.WndProc(ref message);
}

form.FormBorderStyle = FormBorderStyle.Fixed3D;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM