当前位置:编程学习 > C#/ASP.NET >>

tabcontrol的问题

建一个windows form application,一个tabcontrol,建立tabpage1和tabpage2。tabcontrol外有按钮btnStart和btnStart2,tabpage1中有文本框tbResult,tbpage2中有文本框tbResult2。
为了调试方便在Program.cs中加一句
Control.CheckForIllegalCrossThreadCalls = false;
发现按btnStart后再按btnStart2,经常程序死在那里,为什么?加不加那句Application.DoEvents()都一样。
如果把tbResult和tbResult2都放在tabpage1中就很正常。应该和两个tabpage有关系,请详解,谢谢。
以下是代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace test1
{
    public partial class Form1 : Form
    {
        private TextBox[] tbS = new TextBox[2];
        private delegate void J1Delegate(int iSet);
        public Form1()
        {
            InitializeComponent();
        }
        private void btnStart_Click(object sender, EventArgs e)
        {
            J1Delegate J1 = new J1Delegate(Judge1);
            J1.BeginInvoke(0, null, null);
        }
        private void btnStart2_Click(object sender, EventArgs e)
        {
            J1Delegate J1 = new J1Delegate(Judge1);
            J1.BeginInvoke(1, null, null);
        }
        private void Judge1(int iSet)
        {
            int i1;
            for (i1 = 0; i1 < 10; i1++)
            {
                tbS[iSet].AppendText(iSet + "\r\n");
                Thread.Sleep(1000);
                //Application.DoEvents();
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            tbS[0] = tbResult;
            tbS[1] = tbResult2;
        }
    }
}
--------------------编程问答-------------------- 你让主线程 Sleep 了,当然会不响应。不知道你有什么目的,你的实现方法不太合理 --------------------编程问答-------------------- 不知道你想干嘛 不过sleep的时候肯定界面是卡死状态的 --------------------编程问答-------------------- 按理说两个按钮点完,过十几秒两个线程都结束了,界面能重新激活。但是是一死到底,永不恢复。放在一个tabpage中和放在两个tabpage中为什么区别这么大?
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,