2016-08-16 58 views
8

我有一個非常簡單的類,它從System.Windows.Forms.Form繼承並刪除WS_CAPTION窗口樣式。它完美地運行在Windows XP中。在Windows 10中,一段標題欄仍然被繪製,並且在使用自定義標題欄控件時,它看起來很難看。從Windows窗體(Windows 10樣式)中刪除標題欄

我知道有可能有幾種方法來完成這種外觀,但我選擇這個有多種原因。我對其他方法不感興趣 - 這裏不是我的問題的意圖。

我的問題是什麼造成了這種不同之間的這種差異,在Windows 10中呈現與Windows 7?區別不僅在於風格。看起來,即使WS_CAPTION標誌已被刪除,標題欄仍以某種身份呈現。

class BorderlessForm : System.Windows.Forms.Form 
{ 
    protected override System.Windows.Forms.CreateParams CreateParams 
    { 
     get 
     { 
      var _CreateParams = base.CreateParams; 
      _CreateParams.Style &= ~0x00C00000; // remove WS_CAPTION 
      return _CreateParams; 
     } 
    } 
} 

視窗7的屏幕截圖(期望的外觀和MSDN描述一致):

enter image description here

視窗10的屏幕截圖(不期望的外觀不一致MSDN說明):

enter image description here

+0

您正在使用winforms,這是一種過時的表示技術,不可能在以後的Windows版本中以可預測的方式工作。使用WPF。 –

+8

向我展示winforms的MSDN文檔被棄用,並將其標記爲答案... –

+0

我沒有說它被棄用。我剛纔說這已經過時了。這是遺產。 –

回答

3

什麼你正在觀察的不是標題欄,而是邊框尺寸。

我的問題是什麼導致這種情況在Windows 10和Windows 7中呈現這種方式之間的區別?

原因是不同版本的Windows上的外觀和感覺實現。

如果您有興趣即使在Windows 10上如何擺脫尺寸邊框:刪除WS_THICKFRAME標誌。

或者(也許更優選),您可以將表單的FormBorderStyle更改爲其他值。測試什麼最適合你。

但是沒有什麼東西可以精確地定義整個表單邊界。這取決於外觀和感覺(主題)。從技術上講,你不能指望在不同的實現下,表單的邊界不會有差異。你只能通過測試來確保。