WinForm程序啟動(dòng)時(shí)不顯示主窗體的5種方法

實(shí)現(xiàn)代碼及簡(jiǎn)短解釋如下:
//隱藏窗體的方法1/5:不指定任何窗體為主窗體
//注意:通常,在一個(gè)程序中,關(guān)閉主窗體,就可以關(guān)閉應(yīng)用程序。
//但是在沒有主窗體中,不行。
//只能使用Application.Exit()才能關(guān)閉應(yīng)用程序。
//using可以保證Application結(jié)束前,關(guān)閉MyMainForm
using (new Form1())
{
Application.Run();
};
//Application.Run(new Form1());</p> <p>//隱藏窗體的方法2/5:
//通過(guò)close()關(guān)閉主窗口同時(shí)可以關(guān)閉應(yīng)用程序
protected override CreateParams CreateParams
{
get
{
Hide();
return base.CreateParams;
}
}</p> <p>//隱藏窗體的方法3/5:
//這種方法仍然不能用Close主窗口的方式來(lái)關(guān)閉應(yīng)用程序, 還得使用Application.Exit。
protected override void SetVisibleCore( bool value)
{
base.SetVisibleCore(false);
}</p> <p>//注意:方法2和3 使用Show好像沒辦法調(diào)出主窗口,比較郁悶。</p> <p>//隱藏窗體的方法4/5 part1/2: 推薦使用?。。?lt;/p> <p>//ApplicationContext實(shí)質(zhì)上就是一個(gè)Application與主窗體之間的連接器,
//掌管著二者之間的互動(dòng)關(guān)系。其中最主要的,就是負(fù)責(zé)在主窗體
//關(guān)閉時(shí)結(jié)束線程。既然如此,我們只要根據(jù)需要自定義一個(gè)ApplicationContext就可以了
internal class HideOnStartupApplicationContext : ApplicationContext
{
private Form mainFormInternal;</p> <p> // 構(gòu)造函數(shù),主窗體被存儲(chǔ)在mainFormInternal
public HideOnStartupApplicationContext( Form mainForm)
{
this.mainFormInternal = mainForm;</p> <p> this.mainFormInternal .Closed += new EventHandler(mainFormInternal_Closed);
}</p> <p> // 當(dāng)主窗體被關(guān)閉時(shí),退出應(yīng)用程序
void mainFormInternal_Closed(object sender, EventArgs e )
{
Application.Exit();
}
}
//在Main中作如下修改:
HideOnStartupApplicationContext context = new HideOnStartupApplicationContext( new Form1());
Application.Run(context );</p> <p>//隱藏窗體的方法5/5: 推薦使用?。?!
//在構(gòu)造函數(shù)中或者直接設(shè)置form屬性
this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;
程序中配合notifyIcon 控件一起使用,效果很好!
以上代碼在VS2005下編譯通過(guò)。
以下是補(bǔ)充:
WinForm程序啟動(dòng)時(shí)不顯示主窗體的實(shí)現(xiàn)方法
方法一:
工程文件Project1.dpr代碼如下:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
application.showmainform:=false; //隱藏主窗體
Application.Run;
end.
方法二:
使用ApplicationContext:
ApplicationContext實(shí)質(zhì)上就是一個(gè)Application與主窗體之間的連接器,掌管著二者之間的互動(dòng)關(guān)系。其中最主要的,就是負(fù)責(zé)在主窗體關(guān)閉時(shí)結(jié)束線程。既然如此,只要根據(jù)需要自定義一個(gè)ApplicationContext就可以了:
internal class HideOnStartupApplicationContext : ApplicationContext
{
private Form mainFormInternal;
// 構(gòu)造函數(shù),主窗體被存儲(chǔ)在mainFormInternal
public HideOnStartupApplicationContext(Form mainForm)
{
this.mainFormInternal = mainForm;
this.mainFormInternal.Closed += new EventHandler(mainFormInternal_Closed);
}
// 當(dāng)主窗體被關(guān)閉時(shí),退出應(yīng)用程序
void mainFormInternal_Closed(object sender, EventArgs e)
{
Application.Exit();
}
}
隨后,只需要在Main當(dāng)中像下面這樣調(diào)用既可:
static void Main()
{
//...
HideOnStartupApplicationContext context = new HideOnStartupApplicationContext(new MainForm());
Application.Run(context);
}
這樣,MainForm根本不用去考慮窗口與應(yīng)用程序的關(guān)系,安安心心做它的“主窗口”就可以了。
此外,既然明白了ApplicationContext掌管著窗口結(jié)束與程序結(jié)束的關(guān)系,我們就可以用它來(lái)做出一些有趣的東西:
比如MSDN上就給出了一個(gè)“雙主窗口”——同時(shí)顯示2個(gè)Form,關(guān)閉其中任何一個(gè)都不會(huì)導(dǎo)致程序結(jié)束,只有全部關(guān)閉了才會(huì)結(jié)束程序。有興趣的朋友可以參看MSDN關(guān)于ApplicationContext的資料,那里給出了詳細(xì)的說(shuō)明和范例代碼。
再如,要設(shè)計(jì)一個(gè)“向?qū)В╓izard)”類的程序,使用ApplicationContext也是最佳選擇——它可以輕松控制Form到Form的流程,以及Form的啟動(dòng)與關(guān)閉,使得你的每個(gè)Form更加模塊化,減少Form之間的依賴。
相關(guān)文章
WebStorm如何調(diào)試Vue項(xiàng)目? webstorm配置vue開發(fā)環(huán)境指南
WebStorm 支持多種調(diào)試工具,包括瀏覽器的開發(fā)者工具,但本文主要講解的是使用 WebStorm 自帶的調(diào)試功能2025-04-15VSCode和webstorm怎么設(shè)置綠色護(hù)眼背景? 綠豆沙背景色的設(shè)置方法
護(hù)眼色一定程度能保護(hù)眼睛,緩解疲勞,VSCode和webstorm這兩款常用的軟件怎么設(shè)置護(hù)眼色呢?詳細(xì)請(qǐng)看下文介紹2025-04-15WebStorm常用插件以及實(shí)用設(shè)置分享
WebStorm本身已經(jīng)足夠強(qiáng)大,但一些優(yōu)秀的插件能錦上添花,顯著提升開發(fā)效率,詳細(xì)請(qǐng)看下文介紹2025-04-15如何安裝配置WebStorm? WebStorm安裝與使用全方位指南
WebStorm軟件在前端和后端開發(fā)領(lǐng)域都備受青睞,很多朋友不知道該怎么下載安裝,下面我們就來(lái)看看詳細(xì)的安裝配置教程2025-04-15Webstorm怎么配置? Webstorm入門之軟件配置教程
WebStorm是一款功能強(qiáng)大的集成開發(fā)環(huán)境(IDE),支持各種前端開發(fā)技術(shù),今天我們就來(lái)看看Webstorm的配置教程2025-04-15Webstorm怎么設(shè)置字體大小/背景顏色/背景圖片?
WebStorm 允許您自定義界面顏色,以創(chuàng)建更個(gè)性化和美觀的工作空間,今天我們就來(lái)看看Webstorm改變字體大小、背景顏色、設(shè)置背景圖片的方法2025-04-15- VScode上安裝PlatformIO插件能成功安裝,嘗試卸載VScode并刪除插件,這些錯(cuò)誤仍然存在,下面我們就來(lái)看看這個(gè)問(wèn)題的解決辦法2025-04-03
提升代碼搜索效率! VSCode里DeepSeek插件安裝與配置指南
今天我們將向大家介紹如何在Visual Studio Code中安裝并配置 DeepSeek 插件,幫助你更高效地進(jìn)行代碼搜索2025-04-07提升你的編程效率! VSCode的初級(jí)使用教程超詳細(xì)版
VSCode是一款免費(fèi)且開源的代碼編輯器,因其強(qiáng)大的功能和良好的用戶體驗(yàn)而廣受歡迎,本文將詳細(xì)介紹 VSCode 的基本使用方法,并通過(guò)插圖幫助你更好地理解2025-04-03- 今天我們來(lái)聊聊如何安裝和配置VS Code,讓它成為你編程路上的得力助手,這個(gè)過(guò)程其實(shí)很簡(jiǎn)單,只要跟著我的步驟走,你絕對(duì)能搞定2025-04-03