這兩天要弄個東西,然后不想要WinForm自帶的關閉窗體的按鈕,想用自己定義的一個窗體按鈕。又不希望通過更改Form.FormBorderStyle屬性的方法來實現,還想留着那個窗體欄可以對窗體進行移動等。其實禁用最小化、最大化按鈕的直接可以在WinForm的屬性面板中設置了,而這個禁用關閉按鈕的就要自己手動弄了。
到網上找了找資料,找到了:
一種方法是可以在窗體的屬性面板將窗體的 ControlBox屬性設置為false,或者在窗體的構造函數中這樣寫:
public Form1()
{
InitializeComponent();
this.ControlBox = false; // 設置不出現關閉按鈕
}
不過這樣做的話,會連同最小化和最大化按鈕都給弄掉了,所以,如果你想只想讓關閉按鈕不起作用,然后保留最小化、最大化的話,就重寫窗體的CreateParams方法:
//禁用窗體的關閉按鈕
private const int CP_NOCLOSE_BUTTON = 0x200;
protected override CreateParams CreateParams
{
get
{
CreateParams myCp = base.CreateParams;
myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON;
return myCp;
}
}