如圖 打開的影片不是模態視窗 能跟主表單切換......代碼如下:
//系統加載影片
private void SystemLoadCartoon()
{
Thread LoadCartoon = new Thread(delegate()
{
string name = "正在初始化,請稍后...";
cartoonForm cartoonForm = new cartoonForm(name);
//不顯示Form的操作按鈕,防止提前關閉視窗導致后面的invok方法報錯
cartoonForm.ControlBox = false;
//顯示視窗
cartoonForm.StartPosition = FormStartPosition.CenterScreen;
cartoonForm.ShowInTaskbar = false;//不在任務欄顯示
//cartoonForm.TopMost = true;
cartoonForm.ShowDialog();
});
LoadCartoon.Start();
}
uj5u.com熱心網友回復:
本來這個遮罩層不應該使用另外一個表單來實作的。這個cartoonForm視窗是單獨一個執行緒了,只會阻塞它所在的執行緒。
如果實在象用這種方式實作,就改變一下思路(視窗只在主執行緒種進行實體和操作)耗時操作放到執行緒中。
例如:
public void ShowLoad(Action fun)
{
cartoonForm cartoonForm = new cartoonForm();
new Thread(p =>
{
fun.Invoke();
//關閉load視窗
cartoonForm.Invoke(new Action(() => {
cartoonForm.Close();
}));
}).Start();
cartoonForm.ShowDialog();
}
呼叫
ShowLoad(() => {
//我是加載資料操作
System.Threading.Thread.Sleep(5000);
});
uj5u.com熱心網友回復:
因為你開了一個執行緒來啟動,就沒有父表單什么事了,為什么要這么做呢。是顯示一個等待界面么?uj5u.com熱心網友回復:
是的 想顯示一個等待界面 能跟主表單一起顯示 最小化 ....轉載請註明出處,本文鏈接:https://www.uj5u.com/net/269963.html
標籤:C#
