麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 編程設(shè)計 > 正文

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

2020-07-14 13:35:57
字體:
供稿:網(wǎng)友

實現(xiàn)代碼及簡短解釋如下:

復(fù)制代碼
代碼如下:

//隱藏窗體的方法1/5:不指定任何窗體為主窗體
//注意:通常,在一個程序中,關(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:
//通過close()關(guān)閉主窗口同時可以關(guān)閉應(yīng)用程序
protected override CreateParams CreateParams
{
get
{
Hide();
return base.CreateParams;
}
}</p><p>//隱藏窗體的方法3/5:
//這種方法仍然不能用Close主窗口的方式來關(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: 推薦使用!!!</p><p>//ApplicationContext實質(zhì)上就是一個Application與主窗體之間的連接器,
//掌管著二者之間的互動關(guān)系。其中最主要的,就是負(fù)責(zé)在主窗體
//關(guān)閉時結(jié)束線程。既然如此,我們只要根據(jù)需要自定義一個ApplicationContext就可以了
internal class HideOnStartupApplicationContext : ApplicationContext
{
private Form mainFormInternal;</p><p> // 構(gòu)造函數(shù),主窗體被存儲在mainFormInternal
public HideOnStartupApplicationContext( Form mainForm)
{
this.mainFormInternal = mainForm;</p><p> this.mainFormInternal .Closed += new EventHandler(mainFormInternal_Closed);
}</p><p> // 當(dāng)主窗體被關(guān)閉時,退出應(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下編譯通過。

以下是補充:

WinForm程序啟動時不顯示主窗體的實現(xiàn)方法

方法一:

工程文件Project1.dpr代碼如下:


復(fù)制代碼
代碼如下:

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實質(zhì)上就是一個Application與主窗體之間的連接器,掌管著二者之間的互動關(guān)系。其中最主要的,就是負(fù)責(zé)在主窗體關(guān)閉時結(jié)束線程。既然如此,只要根據(jù)需要自定義一個ApplicationContext就可以了:


復(fù)制代碼
代碼如下:

internal class HideOnStartupApplicationContext : ApplicationContext
{
private Form mainFormInternal;
// 構(gòu)造函數(shù),主窗體被存儲在mainFormInternal
public HideOnStartupApplicationContext(Form mainForm)
{
this.mainFormInternal = mainForm;
this.mainFormInternal.Closed += new EventHandler(mainFormInternal_Closed);
}
// 當(dāng)主窗體被關(guān)閉時,退出應(yīng)用程序
void mainFormInternal_Closed(object sender, EventArgs e)
{
Application.Exit();
}
}

隨后,只需要在Main當(dāng)中像下面這樣調(diào)用既可:


復(fù)制代碼
代碼如下:

static void Main()
{
//...
HideOnStartupApplicationContext context = new HideOnStartupApplicationContext(new MainForm());
Application.Run(context);
}

這樣,MainForm根本不用去考慮窗口與應(yīng)用程序的關(guān)系,安安心心做它的“主窗口”就可以了。

此外,既然明白了ApplicationContext掌管著窗口結(jié)束與程序結(jié)束的關(guān)系,我們就可以用它來做出一些有趣的東西:

比如MSDN上就給出了一個“雙主窗口”——同時顯示2個Form,關(guān)閉其中任何一個都不會導(dǎo)致程序結(jié)束,只有全部關(guān)閉了才會結(jié)束程序。有興趣的朋友可以參看MSDN關(guān)于ApplicationContext的資料,那里給出了詳細(xì)的說明和范例代碼。

再如,要設(shè)計一個“向?qū)В╓izard)”類的程序,使用ApplicationContext也是最佳選擇——它可以輕松控制Form到Form的流程,以及Form的啟動與關(guān)閉,使得你的每個Form更加模塊化,減少Form之間的依賴。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲精品久久久久久久久久久 | 91成人亚洲 | 久久国产在线观看 | 欧美精品电影一区二区 | 在线观看视频毛片 | 中文字幕综合在线观看 | 日韩一级免费毛片 | 欧美日韩综合视频 | 成人性生活视频在线播放 | 49vv看片免费| 蜜桃久久一区二区三区 | 最新黄色电影网站 | 91看片王 | 久久伊人精品视频 | 国产女厕一区二区三区在线视 | 午夜精品久久久久久久久久久久久蜜桃 | 国产一区视频在线免费观看 | 精品国产一区二区三区在线观看 | xxxxhd73国产 | 亚洲热线99精品视频 | 一本一本久久a久久精品综合小说 | 色婷婷av一区二区三区久久 | 亚欧在线免费观看 | 成人h精品动漫一区二区三区 | 啪啪激情 | 色综合视频网 | 亚洲影视在线观看 | 国产精品1区2区在线观看 | 毛片网站视频 | 九九热精品视频在线播放 | 久久久久免费精品 | 天天碰天天操 | 久久精品国产99国产精品澳门 | 91九色精品| 久色porn| 一区二区精品在线 | 91精品国产综合久久男男 | 毛片一级免费看 | 欧美在线观看黄色 | 久久生活片 | 久久久裸体视频 |