您好,感谢您阅读此帖.
我在VS2005中用C#做一个Winform的时候,想实现一个效果就是点击一个ListBox里面的项,或者是点击一个Button后引发控件的处理事件,然后我要弹出一个半透明的窗口提示正在处理中,直到程序处理完了才可以对窗口继续操作.
我不知道这样的问题应该怎么去搜索,所以我需要大家的帮助.提供思路和代码等资料都可以.谢谢.祝工作顺利.

解决方案 »

  1.   

    如何弹出一个模式窗口来显示进度条Splash Screen控件
      

  2.   


    我以前在用Asp.net的时候用到过Ajax,但是在Winform我不会用...
      

  3.   

    Winform  用 AJAX ,大哥回答都不看内容!强大用进度条! 还谈半透明窗体干什么?
      

  4.   

    其实 这个问题说简单可以很简单简单办法就是,把处理的过程移到这个半透明的窗口中,处理后自己关闭就可以了
    参数通过构造传进去 ShowDialog() 就可以了
      

  5.   

    楼主是不知道这个东西叫什么名字,知道叫什么名字就好找了,
    这个叫做“遮罩”
    http://www.google.cn/search?hl=zh-CN&client=aff-cs-worldbrowser&hs=v4b&newwindow=1&q=+winform+%E9%81%AE%E7%BD%A9&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=
      

  6.   

    委托+Thread+Bool变量就可以实现
      

  7.   


    /// <summary>
    /// 你需要处理的事情的方法委托
    /// </summary>
    /// <param name="arg"></param>
    public delegate void DoVerbHandler(object arg);
    /// <summary>
    /// 按钮事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1_Click(object sender, EventArgs e)
    {
    Form yourForm = new Form();
    DoVerbHandler invoker = new DoVerbHandler(DoVerbMethod);
    //发起一个线程,回调函数之后可以传任何你需要在回调函数中需要的参数,以便在回调函数中处理
    invoker.BeginInvoke("Argument", new AsyncCallback(DoVerbCompleted), yourForm);
    yourForm.ShowDialog();
    MessageBox.Show("Completed!");
    }/// <summary>
    /// 你需要在窗体遮罩的时候要做的事情
    /// </summary>
    /// <param name="arg"></param>
    private void DoVerbMethod(object arg)
    {
    for (int i = 0; i < 100; i++)
    {
    Thread.Sleep(10);
    }
    }/// <summary>
    /// DoVerbMethod方法执行结束后的回调
    /// </summary>
    /// <param name="iar"></param>
    private void DoVerbCompleted(IAsyncResult iar)
    {
    Form frm = (Form)iar.AsyncState;
    if (frm.InvokeRequired)
    {
    frm.Invoke(new AsyncCallback(DoVerbCompleted), iar);
    }
    else
    {
    frm.Close();
    }
    }
      

  8.   

    委托+Thread都没有使用过,看来这次麻烦大了有没有像Asp.net Web页面的那样的Ajax控件呢?
      

  9.   

    1、假如弹出窗体叫frmProcess
    2、点击按钮打开frmProcess
    3、frmProcess中实现你要处理的逻辑
    4、如果希望有进度条可以使用BackgroundWorker和ProgressBar处理,这两个控件的使用MSDN中都有详细的描述。
    5、如果使用了Worker对象那么在该对象的Complete事件中关闭this窗体,如果没有使用Worker对象(你要处理的逻辑在UI线程中完成)方法执行完之后关闭窗体即可。
      

  10.   

    最好有个示例的源代码参考一下啊,我刚从Web开发转过来,对线程这方面的知识了解得不多.呵呵 .
      

  11.   

    可以新建个窗体 表示你要弹出来的啊  Opacity 这个属性可以修改窗体的透明度
    你用线程执行你操作的方法 并且打开新窗体  可以设个全局变量 表示进度值 新窗体获取这个全局变量
    显示滚动条的进度  线程执行完了  就关闭窗体啊