[英]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
要求初始屏幕在就緒時自動關閉(線程關聯)...
我已經用一個工作示例回答了您,要求您回答同一件事:
使用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.