zoukankan      html  css  js  c++  java
  • 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; 
            } 
  • 相关阅读:
    HDU 1019 Least Common Multiple GCD
    HDU 1263 水果 结构体排序
    HDU 1256 画8 模拟题
    HDU 2058 The sum problem 数学题
    VC6.0开发OCX按钮控件
    利用压缩软件制作插件安装包
    vs生成的exe程序和相关dll打包
    vs2010开发activex(MFC)控件/ie插件(一)
    vs2010开发activex(MFC)控件/ie插件(二):js传参数
    vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数
  • 原文地址:https://www.cnblogs.com/boltwolf/p/3367427.html
Copyright © 2011-2022 走看看