我试图在计时器停止后取消选中复选框。但不知何故,我在这部分OnTimedEvent
中的checkBox1.Checked = false;
方法收到错误:
跨线程操作无效:控制' checkBox1'从a访问 除了创建它的线程以外的线程。
我的部分代码是:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
System.Timers.Timer timeris = new System.Timers.Timer();
int test = 0;
public Form1()
{
InitializeComponent();
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
comboBox1.Enabled = (checkBox1.CheckState == CheckState.Checked);
if (comboBox1.Enabled)
{
button1.Enabled = false;
}
else
{
button1.Enabled = true;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (comboBox1.Enabled)
{
if (comboBox1.SelectedIndex < 0)
{
comboBox1.Text = "Select from list";
}
else
{
this.Hide();
timeris.Elapsed += new ElapsedEventHandler(OnTimedEvent);
timeris.Interval = Convert.ToInt32(test);
timeris.Start();
}
}
else
{
this.Close();
}
}
private void OnTimedEvent(object sender, EventArgs e)
{
timeris.Stop();
if (checkBox1.Checked == true)
{
checkBox1.Checked = false; // there I receive an error
}
this.Show();
}
}
你有什么想法我怎么解决它?如果我构建应用程序并启动.exe
文件它看起来像是成功运行,但我在调试时遇到错误。