【转】关于等待窗体
c#.net 中如果想在主窗口A里點(diǎn)擊打開(kāi)新窗口B(因?yàn)橐獢?shù)據(jù)庫(kù)操作,Bload需一小段時(shí)間)之前彈出帶有滾動(dòng)條等待子窗口C來(lái)提示用戶沒(méi)有死機(jī),應(yīng)該怎么做?我用多線程打開(kāi)了c窗口,但是問(wèn)題:1.C窗口會(huì)作為一個(gè)新窗口彈出,在任務(wù)欄上有顯示,而不能作為A的子窗口彈出,我設(shè)置了mdiParent屬性,但是會(huì)報(bào)錯(cuò)“交叉線程……”;2.等B窗口load完畢需要關(guān)閉C窗口,應(yīng)怎么操作?請(qǐng)達(dá)人給予指導(dǎo),謝謝!
問(wèn)題補(bǔ)充:
1? ,? C_window.ShowInTaskbar=false;這樣就不會(huì)再任務(wù)欄上顯示 2? ,? B窗口載入完畢線程結(jié)束的時(shí)候執(zhí)行關(guān)閉c窗口就可以啦. 我試了試可以在任務(wù)欄上不顯示,但是我想讓這個(gè)C窗口在A窗口的范圍內(nèi)顯示,最好是正中間,但是C只能是以電腦屏幕為準(zhǔn)來(lái)顯示的,位置不太理想,請(qǐng)問(wèn)有辦法解決嗎??
在B窗體的加載事件里啟動(dòng)C窗體,等B加載完后用一個(gè)變量通知C窗體關(guān)閉
private void B_Load(object sender, EventArgs e){c = new C();Thread t=new Thread(new ThreadStart(要干的活 如 display)); //處理線程t.Start();c.ShowDialog();}public void display(){if (this.richTextBox1.InvokeRequired){myDelegate mydele = new myDelegate(copyDoc);richTextBox1.Invoke(mydele);c.Stop = true; //處理線程中,用于與等待窗體線程通信的變量}}public partial class C : Form{private bool IsStop ;private Thread t;public bool Stop{set { IsStop = value; }}public frmWaiting(){InitializeComponent();}private void C_Load(object sender, EventArgs e){IsStop = false;t = new Thread(new ThreadStart(closeThisForm)); //等待B窗體信息的線程t.Start();}private void closeThisForm(){while (!IsStop) //等待信號(hào){ } if (this.InvokeRequired){frmCloseHandler close = new frmCloseHandler(closeThisForm);this.Invoke(close);}else{this.Close();}IsStop = false;}
我剛整過(guò)一個(gè)這樣的
轉(zhuǎn)載于:https://www.cnblogs.com/huangfr/archive/2012/04/04/2431691.html
總結(jié)
- 上一篇: yii1.1分页不起作用怎么办
- 下一篇: POJ 2186