簡體   English   中英

c#一個窗體在winform項目中阻止另一個窗體

[英]c# one Form blocking another in a winform Project

我有一個使用2種形式的應用程序,在以下配置中使用了主表單和啟動表單:

public class MainForm : Form
{
    public MainForm()
    {
       SplashScreen splash = new SplashScreen();

       // configure Splash Screen
    }
}


public class SplashScreen
{
    public SplashScreen()
    {
       InitializeComponent();

       // perform initialization

       this.ShowDialog();
       this.BringToFront();
    }
}

注意:主表單是使用以下代碼創建的:

Application.Run( new MainForm() );

上面的問題是,除非使用以下命令關閉閃屏,否則不會發生閃屏的配置

splash.Close();

僅當這種情況發生時,其余MainForm構造函數才會運行。 如何輕松停止這種阻止行為?

通常,您需要在單獨的線程上顯示啟動屏幕,並讓主線程繼續進行加載。 並非無關緊要-特別是,您需要使用Control.Invoke要求初始屏幕在就緒時自動關閉(線程關聯)...

我已經用一個工作示例回答了您,要求您回答同一件事:

C#WinForms啟動(Splash)表單未隱藏

使用splash.Open()而不是splash.OpenDialog(),這不會發生。

基本上,您只想顯示初始表單,但不要讓它阻止主表單。

這是我的操作方法:

class MainForm : Form {

    SplashScreen splash = new SplashScreen();  //Make your splash screen member

    public MainForm()
    {
        splash.Show();  //Just show the form
    }

}

然后在MainForm_Load中按常規進行初始化。

現在,當您准備好顯示表單時(MainForm_Shown):

public MainForm_Shown()
{
    splash.Close();
}

這使您的MainForm在顯示初始屏幕時可以正常加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM