黑马程序员技术交流社区

标题: winform里面 有个按钮 我点击一下要调用一个do()方法 [打印本页]

作者: lyz1024    时间: 2012-1-25 19:19
标题: winform里面 有个按钮 我点击一下要调用一个do()方法
本帖最后由 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;
}
这样实现不了
作者: 孙琦    时间: 2012-1-25 19:33

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

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
晕,用多线程呀,测试一下
作者: 孙琦    时间: 2012-1-25 19:50
lyz1024 发表于 2012-1-25 19:47
晕,用多线程呀,测试一下

如果你的循环时间过长的话,不用多线程UI会出现假死的现象,具体的你懂,就是界面不能拖动,同样用多线程可以解决,岂不更好,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2