解決 WinForm 重寫 CreateParams 隱藏窗口以後的顯示問題

WinForm 啓動時隱藏窗體最簡單有效的辦法是重寫 CreateParams

protected override CreateParams CreateParams
{
    get
    {
        base.Visible = false;
        return base.CreateParams;
    }
}

但是想要再把這個窗體顯示出來, this.Show() 或者 this.Visible = true 都是無能爲力的。

怎麼辦?在 Win32 API 裏面找找看吧,

BOOL ShowWindow(HWND hWnd, int nCmdShow) 這個看上起不錯,但是調用以後窗體仍然不會顯示出來。

再找,

BOOL SetParent(HWND hWndChild, HWND hWndNewParent )

OK,在獲取到 this.Handle 以後調用以下方法,窗體終於顯示出來了

SetParent(this.Handle, 0);

Win32 API 方法聲明以及 P/Invoke 導入不在本文說明範圍。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章