C#关于等待窗体(转)

c#.net 中如果想在主窗口A里点击打开新窗口B(因为要数据库操作,Bload需一小段时间)之前弹出带有滚动条等待子窗口C来提示用户没有死机,应该怎么做?我用多线程打开了c窗口,但是问题:1.C窗口会作为一个新窗口弹出,在任务栏上有显示,而不能作为A的子窗口弹出,我设置了mdiParent属性,但是会报错“交叉线程……”;2.等B窗口load完毕需要关闭C窗口,应怎么操作?请达人给予指导,谢谢!

问题补充:

1  ,  C_window.ShowInTaskbar=false;这样就不会再任务栏上显示
2  ,  B窗口载入完毕线程结束的时候执行关闭c窗口就可以啦. 
我试了试可以在任务栏上不显示,但是我想让这个C窗口在A窗口的范围内显示,最好是正中间,但是C只能是以电脑屏幕为准来显示的,位置不太理想,请问有办法解决吗?

 

在B窗体的加载事件里启动C窗体,等B加载完后用一个变量通知C窗体关闭

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)    //等待信号 
            { }      
            if (this.InvokeRequired) 
            { 
                frmCloseHandler close = new frmCloseHandler(closeThisForm); 
                this.Invoke(close); 
            } 
  
            else
            { 
                this.Close(); 
            } 
            IsStop = false; 
        } 

 

转载于:https://www.cnblogs.com/boltwolf/p/3367427.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值