困惑了我N天了还没解决!winform请问长操作时如何弹出窗口,等长操作完成后自动关闭??? 困惑了我N天了还没解决!winform请问长操作时如何弹出窗口,等长操作完成后自动关闭??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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(); 建议把vForm.Dispose();改为vForm.Close(); to 困惑了我N天了还没解决!winform请问长操作时如何弹出窗口,等长操作完成后自动关闭???你可以用锁机制来解决这个问题,用metux来做,参看http://blog.csdn.net/tjvictor/archive/2007/01/20/1488290.aspx to : zswang(伴水清清)(专家门诊清洁工)如果是 vForm.Show()这样的话,窗口焦点仍然可以切换到主窗口的??? 最简单的方法是使用 BackgroundWorker 组件异步执行你的耗时操作,在 RunWorkerCompleted 事件及 ProgressChanged 事件中做相应的处理,利用 ReportProgress 方法配合 ProgressBar 控件还能构造漂亮的进度条,MSDN 中有实例可以参考 to: vrhero() 我是使用vs2003,请问有没有例子 //先看看效果,啥也不说了,自己发挥吧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();} 谢谢zswang!! 经试验OK!有个问题,执行这个后,界面完全锁死,连窗口栏目都不能获取焦点和程序最小化,有没有界面再友善一点的?(可能最小化和移动) 如何开线程打开一个模式窗口,并及时更新模式窗口的label?? to: dengjiyun请问vs2003怎么做??有没有例子? 谢谢zswang!! 问题解决了 请问在winform中如何修datagridview中cell的边距。 【求助】 C# 基于 PDU 编码的 短信开发例子 不要dll的 ........ 关于字符串拆分函数的参数 MSDN都看不懂该怎么办? C#获取电子秤重量 ftp操作 C#如何调用LINUX上的MYSQL啊? 急寻"剑神独孤求败"WebWord控件 有个问题,按钮(服务器端的控件)按下时如何执行客户端的脚本, 哪有vs.net最新版下载啊?? 急:C#怎样使用正则表达式去掉字符串中所有的html标记 c# richtextbox的rtf格式
vForm.Show();
vForm.Update();
vForm.Text = "测试ing";
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(10); // 换成你的耗时操作
Application.DoEvents();
}
vForm.Dispose();
http://blog.csdn.net/tjvictor/archive/2007/01/20/1488290.aspx
我是使用vs2003,请问有没有例子
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();
}