1. 程式人生 > >WinForm程式啟動時不顯示主窗體的5種方法

WinForm程式啟動時不顯示主窗體的5種方法

文中所述WinForm程式啟動時不顯示主窗體的實現方法主要有以下5種,個人覺得第五種最簡單,而且效果也不錯,第四種方法也值得推薦。

實現程式碼及簡短解釋如下:
//隱藏窗體的方法1/5:不指定任何窗體為主窗體
//注意:通常,在一個程式中,關閉主窗體,就可以關閉應用程式。
//但是在沒有主窗體中,不行。
//只能使用Application.Exit()才能關閉應用程式。
//using可以保證Application結束前,關閉MyMainForm

using (new Form1())
{
    Application.Run();
};
//Application.Run(new Form1());

//隱藏窗體的方法2/5:
//通過close()關閉主視窗同時可以關閉應用程式


protected override CreateParams CreateParams
{
    get
    {
        Hide();
        return base.CreateParams;
    }
}

//隱藏窗體的方法3/5:
//這種方法仍然不能用Close主視窗的方式來關閉應用程式, 還得使用Application.Exit。

protected override void SetVisibleCore( bool value)
{
    base.SetVisibleCore(false);
}

//注意:方法2和3 使用Show好像沒辦法調出主視窗,比較鬱悶。

//隱藏窗體的方法4/5 part1/2: 推薦使用!!!
//ApplicationContext實質上就是一個Application與主窗體之間的聯結器,
//掌管著二者之間的互動關係。其中最主要的,就是負責在主窗體
//關閉時結束執行緒。既然如此,我們只要根據需要自定義一個ApplicationContext就可以了


internal class HideOnStartupApplicationContext : ApplicationContext
{
    private Form mainFormInternal;

    // 建構函式,主窗體被儲存在mainFormInternal
    public HideOnStartupApplicationContext( Form mainForm)
    {
        this.mainFormInternal = mainForm;

        this.mainFormInternal .Closed += new EventHandler(mainFormInternal_Closed);
    }

    // 當主窗體被關閉時,退出應用程式
    void mainFormInternal_Closed(object sender, EventArgs e )
    {
        Application.Exit();
    }
}
//在Main中作如下修改:
HideOnStartupApplicationContext context = new HideOnStartupApplicationContext( new Form1());
Application.Run(context );

//隱藏窗體的方法5/5: 推薦使用!!!
//在建構函式中或者直接設定form屬性

this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;


程式中配合notifyIcon 控制元件一起使用,效果很好!
以上程式碼在VS2005下編譯通過。

相關推薦

WinForm程式啟動顯示窗體5方法

文中所述WinForm程式啟動時不顯示主窗體的實現方法主要有以下5種,個人覺得第五種最簡單,而且效果也不錯,第四種方法也值得推薦。 實現程式碼及簡短解釋如下://隱藏窗體的方法1/5:不指定任何窗體為主窗體//注意:通常,在一個程式中,關閉主窗體,就可以關閉應用程式。//但是

基於Dialog程式,啟動顯示視窗,只顯示子視窗的實現

在專案中有如下的一個需求:軟體在網路啟動狀態下顯示主視窗,而在單機狀態下只顯示其子對話方塊(我的是無模式的).在網上找了一天,各種辦法都似乎不太好,不過晚上終於找到了一個不錯的解決辦法.使得我很好的解決了這個問題.if (theApp.m_bUnConnect)    {        CRe

如何讓windows控制檯程式執行顯示黑色框,直接執行

有時候在執行控制檯程式的時候,總會彈出一個DOS框,這個框有時候並不需要,如果在執行控制檯程式時,不想顯示黑色框體,則可以 在程式最開始處加一句: #pragma comment( linker, "/subsystem:windows /entry:mainCRTStar

Windows環境下讓tomcat startup.bat啟動顯示控制檯

需要做如下修改:  找到TOMCAT_HOME\bin\setclasspath.bat 在檔案底部找到如下程式碼:rem Don't override _RUNJAVA if the user has set it previously if not "%_RUNJAVA

BAT文件運行顯示命令窗口的方法

china 所在 .html bject nbsp rip pan fly -s [轉載] BAT文件運行時不顯示命令窗口的方法 ChinaUnix Fly In Bed 可以編一個VBS文件調用BAT文件,使運行BAT文件時不顯示命令窗口。 新建一個記事本文件,保存為

NestedScrollView內巢狀RecyclerView,開啟頁面顯示在頂部的解決方法

由於新需求要求:個人資訊頁面最頂部要增加兩條姓氏全拼,姓名全拼,需求文件如下: 之前佈局用的是NestedScrollView內嵌RecyclerView,RecyclerView位於子佈局的第一個,顯示效果上沒有什麼問題。xml佈局如下: <?xml vers

C#Winform實現程式關閉隱藏窗體,二次程式啟動顯示

思路:本程式啟動時候,儲存當前窗體控制代碼到檔案, 關閉時候隱藏窗體,不殺死程序,不退出. 下次啟動無需重新建立窗體,直接顯示原窗體,可以實現安卓程式的程序後臺隱藏效果. 點選桌面圖示,又同時可以防止多個程序多開的現象,避免多個程序衝突 好處:登入過的使用者,無需重新登入,

C#技巧【Winform程式讓MessageBox.Show顯示在父窗體中間】

Winform程式讓MessageBox.Show顯示在父窗體中間下面的寫法,預設是顯示在螢幕的中間。DialogResult dr = MessageBox.Show("是否要刪除此資料?", "刪除確認", MessageBoxButtons.OKCancel,Messa

angular 數據內容有重復顯示問題

字符串 tro http blog pan track by item repeat color <body ng-app="app"> <div ng-controller="myctl"> <ul>

Fcitx輸入中文顯示候選詞框的解決辦法

code rem 不顯示 module log highlight true sudo bash 在非KDE桌面環境下,如果安裝了fcitx-module-kimpanel,可能會導致Fcitx輸入中文時不顯示候選詞框,移除該組件,然後重啟Fcixt。 $ sudo ap

C# 使用printDocument1.Print打印顯示 正在打印對話框

blog int document gpo pri tro 對話框 方法 () C#使用printDocument1.Print打印時不顯示正在打印對話框有兩種方法 第一種,使用PrintController PrintController prin

sqlserver中float轉varchar顯示科學計數法

serve ima eight bsp sele content HR ali 同事 MSSQL中 float轉換為varchar 變成科學計數法解決方案 在系統初始化的時候,因為有同事,沒有在數值型的數據前面加上 單引號,導致進入數據庫後都變成float型我們需

關於WPF下用戶登錄後再啟動窗體的實現方法

但是 color event mar 登陸 one 測試 public close /// <summary>App.xaml 的交互邏輯</summary> public partial class App : Application

Xcode 執行程式,memory 顯示記憶體

執行程式後,xcode 不顯示當前使用的記憶體情況,問題是打開了殭屍--enable zoombie Objects,關閉即可 開啟 product--->SCheme-->EditSCheme -->enable zoombie Objects &nbs

解決GitHub提交顯示自己的頭像 顯示另一個賬號(其實也是自己)

1.  git show  看看是否是自己的githup 賬號的郵箱  如果不是進行下列操作 2.  git config user.email "你的郵箱地址",修改郵箱 3   修改完以後輸入git config user.email 檢查是

程式啟動log4j報錯 No Log4j 2 configuration file found

ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically p

MTK Android O 充電狀態下電池電量100%顯示閃電圖示

需求: android 8.1.1版本google原生充電的時候都會顯示一個閃電的形狀,客戶要求在百分之百電量的時候不顯示閃電 修改: frameworks\base\packages\SettingsLib\src\com\android\settingslib\graph\Bat

程式首頁顯示tabbar,而非首頁顯示tabbar的方法

很多新手在寫tabBar的時候會發現明明自己按照微信開發文件的示例寫的tabBar,但是卻不出自己想要的效果,這個我剛開始寫小程式的時候也遇到了同樣的問題,現在給大家講講我的解決方案   一般我們會在在專案的app.json使用以下程式碼,卻沒有如期望那樣在螢幕底部出現TabBar。&nb

除錯程式,卻顯示程式畫面

今天早上要上班,要除錯原生代碼,啟動後,也調動起來了瀏覽器,但是就是不顯示畫面,瀏覽器也只是顯示斷網的頁面,找不到資訊之類的。 1.更換Debug模式和release模式之間進行切換,還是不行 2.看電腦的右下角的系統欄下的在電腦聯網標誌的左側吧,有個類似磚頭堆起來的四層高的IIs Expres

BottomNavigationView去除動畫,大於3項顯示文字的最新解決方案

背景 今天在用 BottomNavigationView實現底部導航欄時出現了個小問題,效果如下: 當使用BottomNavigationView選單項多於3個時,去除動畫效果,顯示選單項文字。 初級方案 在網上看到解決方案是這樣: /** * 建立時間:2