亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

第一個表格不關閉,第二個表格不打開

第一個表格不關閉,第二個表格不打開

C#
忽然笑 2022-11-13 13:43:49
我想要一個歡迎表單,名為 StartForm。這會關閉,然后打開我的 MenuForm。當前的問題是:第一個保持打開狀態,不關閉以顯示第二個。我嘗試了幾件事,比如簡單地顯示和隱藏它們。我現在嘗試 Application.run 然后隱藏它。不幸的是它保持開放。并且不 Application.run 第二種形式。    static void Main()    {        Form StartForm = new Main();        MForm MenuForm = new MForm();        Application.Run(StartForm);        //        Task.Delay(500).ContinueWith((t) =>        {            StartForm.Hide();            Application.Run(MenuForm);        });        }我預計這會在等待延遲后關閉第一個表格,但它保持打開狀態。
查看完整描述

2 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

調用Application.Run()會導致新的應用程序消息循環開始在當前線程上運行。Application.Run()如果在第一個應用程序運行時進行后續調用,則InvalidOperationException根據docs拋出一個。但是,在您的情況下這實際上是不可能的,因為您的調用Application.Run()是在 UI 線程上調用的,這會阻止任何后續代碼的執行,直到它退出。


相反,我們需要通過使用來引導應用程序Application.Run(new Main()),然后在Main表單內部我們將處理顯示和隱藏行為。


以下是我建議如何實現這一目標:


首先,在您的Main方法中,將所有內容替換為Application.Run(new Main());.


然后在您的Main表單內部創建一個如下所示的方法:


private void Main_Shown(Object sender, EventArgs e)

{

    Task.WaitAll(Task.Delay(500));

    this.Hide();

    var menuForm = new MForm();

    menuForm.Closed += (obj, args) => { this.Show(); };

    menuForm.Show();

}

最后,進入您的Main.Designer.cs文件并確保將Shown事件訂閱到Main_Shown您剛剛在方法中創建的InitializeComponent方法,如下所示:


this.Shown += new System.EventHandler(this.Main_Shown);


解釋這里發生了什么:


根據文檔,Form.Shown第一次向用戶顯示表單時會觸發事件。這對于這個用例來說是完美的,所以我們“掛鉤”它并通過等待 500 毫秒的延遲來響應它。


之后我們隱藏當前的 ( Main) 表單,創建新的 ( MForm) 表單并顯示它。但更重要的細節是我們訂閱了該表單的Closed事件,以便當用戶關閉它時,該Main表單會再次顯示。


查看完整回答
反對 回復 2022-11-13
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

使用計時器在 Firstform 中打開 Second form,并在顯示 Secondform 后隱藏 Firstform。


像這樣。


主要的


static void Main()

{

    Form StartForm = new Main();

    Application.Run(StartForm);

}

第一形式


設置間隔為 5000 的計時器并啟用它。


private void timer1_Tick(object sender, EventArgs e)

{

    MForm MenuForm = new MForm();

    this.Hide();

    MenuForm.Show();

    timer1.Stop();

}


查看完整回答
反對 回復 2022-11-13
  • 2 回答
  • 0 關注
  • 144 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號