您好,感谢您阅读此帖.
我在VS2005中用C#做一个Winform的时候,想实现一个效果就是点击一个ListBox里面的项,或者是点击一个Button后引发控件的处理事件,然后我要弹出一个半透明的窗口提示正在处理中,直到程序处理完了才可以对窗口继续操作.
我不知道这样的问题应该怎么去搜索,所以我需要大家的帮助.提供思路和代码等资料都可以.谢谢.祝工作顺利.
我在VS2005中用C#做一个Winform的时候,想实现一个效果就是点击一个ListBox里面的项,或者是点击一个Button后引发控件的处理事件,然后我要弹出一个半透明的窗口提示正在处理中,直到程序处理完了才可以对窗口继续操作.
我不知道这样的问题应该怎么去搜索,所以我需要大家的帮助.提供思路和代码等资料都可以.谢谢.祝工作顺利.
解决方案 »
- 有用c#做过视频监控方面的人吗?
- 关于DirectoryEntry构造函数第一个参数Path的问题
- Winform中每个功能模块我分别编译成Dll,但是每个Dll都要连接数据库,怎么办??
- 求成熟的高校教务系统下载或代码,最好是ASP.Net开发的
- 急,急,,,怎么把图片生成xml文件 只有20分,大伙帮一下
- asp.net 中, 为什么加载的FLASH,每开开一次网页就要点击激活一次???
- 求助!参数无法传递?急
- winform控件的相对定位问题
- 如何对windows media player9用c#编程,高手们谢谢了
- vs2013 wpf程序的udpsocket控件在哪里
- 为什么弹出网页就IE6弹出后直接最小化了?
- C# xml查询
我以前在用Asp.net的时候用到过Ajax,但是在Winform我不会用...
参数通过构造传进去 ShowDialog() 就可以了
这个叫做“遮罩”
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=
/// <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();
}
}
2、点击按钮打开frmProcess
3、frmProcess中实现你要处理的逻辑
4、如果希望有进度条可以使用BackgroundWorker和ProgressBar处理,这两个控件的使用MSDN中都有详细的描述。
5、如果使用了Worker对象那么在该对象的Complete事件中关闭this窗体,如果没有使用Worker对象(你要处理的逻辑在UI线程中完成)方法执行完之后关闭窗体即可。
你用线程执行你操作的方法 并且打开新窗体 可以设个全局变量 表示进度值 新窗体获取这个全局变量
显示滚动条的进度 线程执行完了 就关闭窗体啊