C#等待提示窗体怎么做

fqzzNevergiveup 2017-08-03 05:31:10
最近在用C#写个程序,其中一个功能耗费时间有点长,想加个等待效果,
即,功能开始运行时,弹出等待提示窗体,之后功能依旧继续执行,但是所有按钮等其他控件不能使用,
等功能运行结束时,等待窗体消失.按钮等其他控件可以使用.
...全文
789 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
panqiang1007 2017-08-04
  • 打赏
  • 举报
回复



private void ExecJindu_Load(object sender, EventArgs e)
{

lab_AllNum.Text = sqlStr.Count.ToString();
lab_execNum.Text = "0";
pb_JinduTiao.Maximum = sqlStr.Count;
CheckForIllegalCrossThreadCalls = false;
ExecSql = new Thread(ExecSqlThr);
ExecSql.Start();
}

private void ExecSqlThr()
{

openConn();
SqlTransaction st = Conn.BeginTransaction();
try
{
int exNum = 0;
for (int i = 0; i < sqlStr.Count; i++)
{
//开始执行SQL
using (SqlCommand cmd = new SqlCommand(sqlStr[i].ToString(), Conn))
{
if (execDesc[i].ToString()!="")
{
lab_ExecIng.Text = "正在执行:" + execDesc[i].ToString();
lab_ExecIng.Location = new Point((this.Width - lab_ExecIng.Width) / 2, lab_ExecIng.Location.Y);
}
cmd.Transaction = st;
cmd.ExecuteNonQuery();
exNum++;
pb_JinduTiao.Value = exNum;
lab_execNum.Text = pb_JinduTiao.Value.ToString();
Thread.Sleep(800);
}
}
//全部执行完成后的代码,并提交SQL结果
if (exNum >= pb_JinduTiao.Maximum)
{
st.Commit();
Thread.Sleep(500);

Res.Text = exNum.ToString();

lab_ExecIng.Text = "执行成功....";
lab_ExecIng.Location = new Point((this.Width - lab_ExecIng.Width) / 2, lab_ExecIng.Location.Y);
lab_ExecIng.ForeColor = Color.Blue;
Thread.Sleep(1000);
}
else
{
Res.Text = "本次共需要执行:"+ pb_JinduTiao.Maximum.ToString()+"条命令,但系统只执行了:"+exNum.ToString()+"条命令\n本次操作失败,撤销已执行命令。\n情重试或联系开发商";
st.Rollback();
}

this.Close();
this.Dispose();

}
catch (Exception ex)
{
Res.Text = "错误信息:\n" + ex.Message;
st.Rollback();
this.Close();
this.Dispose();
}
finally
{
closeConn();
}

ExecSql.Abort();
}


这个是我做的一个进度的操作。主要代码
在构造函数里,需要传过来2个ArrayList 一个是执行的SQL,一个是对应之执行SQL的提示语。
dy00544 2017-08-04
  • 打赏
  • 举报
回复
直接将进度条放主界面不行么,然后耗时任务在线程里面处理,或者异步执行,运行时禁用其他控件就是了。
threenewbee 2017-08-03
  • 打赏
  • 举报
回复
引用 4 楼 fqzzNevergiveup 的回复:
[quote=引用 3 楼 caozhy 的回复:] 弹出的窗口用showdialog,自然原来的窗口就禁用了。
可是用showdialog弹出等待窗体, 程序就不会往下执行了呀![/quote] 你要把任务放在线程里。
liu_huang_shu 2017-08-03
  • 打赏
  • 举报
回复
貌似在功能开始弹出窗体,功能结束前关闭窗体就行了吧 SHE JI ZHE GE YAN ZHENG MA DE SHI CHI SHI ZHANG DA DE BA
fqzzNevergiveup 2017-08-03
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
弹出的窗口用showdialog,自然原来的窗口就禁用了。
可是用showdialog弹出等待窗体, 程序就不会往下执行了呀!
threenewbee 2017-08-03
  • 打赏
  • 举报
回复
弹出的窗口用showdialog,自然原来的窗口就禁用了。
笑客v 2017-08-03
  • 打赏
  • 举报
回复
弹出新窗口,加个进度条控件,原窗口暂时隐藏,进度条满关闭新窗口,原窗口显示
伢子 2017-08-03
  • 打赏
  • 举报
回复
wpf还是winform

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧