A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 lyz1024 于 2012-1-25 21:21 编辑

winform里面  有个按钮   我点击一下要调用一个do()方法
但是我想要的就是  
我点击一下调用do()方法后
在do()方法执行期间
我就不能点按钮了
要do()执行完以后  
才能点击
private void button1_Click(object sender, EventArgs e)
{
    button1.enable=false;
   
    do();
    .......
    button1.enable=true;
}
这样实现不了

3 个回复

倒序浏览

这个问题好解决 用多线程解决;;我给你一段实例代码

void ChangeText()
        {
            button2.Enabled = false;
            for (int i = 0; i < 999999999; i++)
            {

            }
            MessageBox.Show("循环完毕:)");
            button2.Enabled = true;
        }
        /// <summary>
        /// 多线程
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            Thread thread = new Thread(ChangeText);
            thread.IsBackground = true;
            thread.Start();
        }
回复 使用道具 举报
晕,用多线程呀,测试一下
回复 使用道具 举报
lyz1024 发表于 2012-1-25 19:47
晕,用多线程呀,测试一下

如果你的循环时间过长的话,不用多线程UI会出现假死的现象,具体的你懂,就是界面不能拖动,同样用多线程可以解决,岂不更好,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马