困惑了我N天了还没解决!winform请问长操作时如何弹出窗口,等长操作完成后自动关闭???

解决方案 »

  1.   

    Form vForm = new Form();
    vForm.Show();
    vForm.Update();
    vForm.Text = "测试ing";
    for (int i = 0; i < 1000; i++)
    {
        Thread.Sleep(10); // 换成你的耗时操作
        Application.DoEvents();
    }
    vForm.Dispose();
      

  2.   

    建议把vForm.Dispose();改为vForm.Close();
      

  3.   

    to 困惑了我N天了还没解决!winform请问长操作时如何弹出窗口,等长操作完成后自动关闭???你可以用锁机制来解决这个问题,用metux来做,参看
    http://blog.csdn.net/tjvictor/archive/2007/01/20/1488290.aspx
      

  4.   

    to : zswang(伴水清清)(专家门诊清洁工)如果是 vForm.Show()这样的话,窗口焦点仍然可以切换到主窗口的???
      

  5.   

    最简单的方法是使用 BackgroundWorker 组件异步执行你的耗时操作,在 RunWorkerCompleted 事件及 ProgressChanged 事件中做相应的处理,利用 ReportProgress 方法配合 ProgressBar 控件还能构造漂亮的进度条,MSDN 中有实例可以参考
      

  6.   

    to: vrhero() 
    我是使用vs2003,请问有没有例子
      

  7.   

    //先看看效果,啥也不说了,自己发挥吧
    private void button1_Click(object sender, EventArgs e)
    {
        Form vForm = new Form();
        Enabled = false; // 禁止用户操作
        vForm.FormBorderStyle = FormBorderStyle.None;
        vForm.UseWaitCursor = true;
        Label vLabel = new Label();
        vForm.BackColor = Color.Blue; 
        vLabel.Parent = vForm;
        vLabel.Text = "wait.....";
        vLabel.TextAlign = ContentAlignment.MiddleCenter;
        vForm.Height = vLabel.Height;
        vForm.Width = vLabel.Width;
        vForm.TopMost = true;
        vForm.StartPosition = FormStartPosition.Manual;    Point vPoint = Location;
        vPoint.Offset(
            (Width - vForm.Width) / 2, (Height - vForm.Height) / 2);
        vForm.Location = vPoint;
        vForm.Show();
        vForm.Update();
        vForm.Text = "测试ing";
        for (int i = 0; i < 1000; i++)
        {
            Thread.Sleep(2); // 换成你的耗时操作
            Application.DoEvents();
        }
        vForm.Close();
        Enabled = true;
        Focus();
    }
      

  8.   

    谢谢zswang!! 经试验OK!有个问题,执行这个后,界面完全锁死,连窗口栏目都不能获取焦点和程序最小化,有没有界面再友善一点的?(可能最小化和移动)
      

  9.   

    如何开线程打开一个模式窗口,并及时更新模式窗口的label??
      

  10.   

    to: dengjiyun请问vs2003怎么做??有没有例子?
      

  11.   

    谢谢zswang!!   问题解决了