您好,感谢您阅读此帖.
我在VS2005中用C#做一个Winform的时候,想实现一个效果就是点击一个ListBox里面的项,或者是点击一个Button后引发控件的处理事件,然后我要弹出一个半透明的窗口提示正在处理中,直到程序处理完了才可以对窗口继续操作.
我不知道这样的问题应该怎么去搜索,所以我需要大家的帮助.提供思路和代码等资料都可以.谢谢.祝工作顺利.
我在VS2005中用C#做一个Winform的时候,想实现一个效果就是点击一个ListBox里面的项,或者是点击一个Button后引发控件的处理事件,然后我要弹出一个半透明的窗口提示正在处理中,直到程序处理完了才可以对窗口继续操作.
我不知道这样的问题应该怎么去搜索,所以我需要大家的帮助.提供思路和代码等资料都可以.谢谢.祝工作顺利.
解决方案 »
- 如何判断导入数据库的excel表是否有重复记录?
- 水晶报表,换了电脑就不显示报表了。
- 问个winform制作安装程序问题
- 如何把从数据库查到的数据存到list<T>中?
- 字符串赋值
- 100分求解:C#写的dll,在VC 6.0中怎么调用?
- 放分100!!! ,求如何向服务器上传文件提供身份认证?
- 初级:datagrid 绑定问题:this.sqlDataAdapter1.Fill(this.dataSet11); this.DataGrid1.DataBind();第一句有什么问题呀
- 急!!!怎样在C#中调用SHEmptyRecycleBin函数,
- 救命纳。csc不行啊
- 为什么弹出网页就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线程中完成)方法执行完之后关闭窗体即可。
你用线程执行你操作的方法 并且打开新窗体 可以设个全局变量 表示进度值 新窗体获取这个全局变量
显示滚动条的进度 线程执行完了 就关闭窗体啊