我希望我的Windows窗體形成,以保持窗口邊框,而沒有標題欄,並且是不調整大小(固定)(類似於窗口預覽,當一個人在任務欄上懸停鼠標按鈕):如何保持邊境一個固定的形式?
設置爲ControlBox
到false
和Text
到""
刪除標題欄並保持邊框,因爲我想,但只有當窗體是可觀的時,邊框纔可見。當我設置了FormBorderStyle
到的Fixed*
樣式之一,邊界消失:
我怎麼可能實現所描述的行爲?
我希望我的Windows窗體形成,以保持窗口邊框,而沒有標題欄,並且是不調整大小(固定)(類似於窗口預覽,當一個人在任務欄上懸停鼠標按鈕):如何保持邊境一個固定的形式?
設置爲ControlBox
到false
和Text
到""
刪除標題欄並保持邊框,因爲我想,但只有當窗體是可觀的時,邊框纔可見。當我設置了FormBorderStyle
到的Fixed*
樣式之一,邊界消失:
我怎麼可能實現所描述的行爲?
你可以的PInvoke SetWindowsLong和調整window styles:
// run in LINQpad
private const int GWL_STYLE = -16;
private const int WS_SIZEBOX = 0x040000;
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
void Main()
{
var form = new Form();
form.ControlBox = false;
form.FormBorderStyle = FormBorderStyle.FixedDialog;
form.Show();
SetWindowLong(form.Handle, GWL_STYLE, GetWindowLong(form.Handle, GWL_STYLE) | WS_SIZEBOX);
}
之後,你將不得不手動prevent resizing不過。
現在他有兩個問題,這些聲明是錯誤的64位代碼。重寫CreateParams屬性是正確的方法。 –
我剛剛玩過我的一個項目,並通過設計視圖將FormBorderStyle
設置爲FixedSingle
,並且窗口似乎保留了Windows 8的邊框。我最初在標題中有文本,它強制邊框呈現。我刪除了文本和邊界不再呈現,所以作爲一個哈克解決方案,我只是輸入一個空字符串,通過敲擊退格幾次。這使得邊界顯示並保持固定。
對於我請稍候對話框中,我只是把我的周圍的形式(隱藏控件)停靠面板和所使用的面板邊框 – Sayse
「固定」是不是爲FormBorderStyle屬性的有效設置。更好地記錄你的問題。包括至少包括正在運行的窗口的截屏,Windows版本和他們的方式,你希望它看起來的一個鏡頭。 –
@HansPassant人,誰回答我的問題似乎明白了什麼完美的我問。不過,我包括了屏幕截圖。 – Spook