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有关系,请详解,谢谢。
以下是代码:
--------------------编程问答-------------------- 你让主线程 Sleep 了,当然会不响应。不知道你有什么目的,你的实现方法不太合理 --------------------编程问答-------------------- 不知道你想干嘛 不过sleep的时候肯定界面是卡死状态的 --------------------编程问答-------------------- 按理说两个按钮点完,过十几秒两个线程都结束了,界面能重新激活。但是是一死到底,永不恢复。放在一个tabpage中和放在两个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;
}
}
}
补充:.NET技术 , C#