[英]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.