无法写入 richTextBox

Can't write to the richTextBox

我有这个简单的程序:

private static System.Timers.Timer t3;

    private void button1_Click(object sender, EventArgs e)
    {
        t3 = new System.Timers.Timer(5000);
        t3.AutoReset = true; t3.Enabled = true; t3.Elapsed += OnTimedEvent3;

    }

    private void OnTimedEvent3(Object source, ElapsedEventArgs e)
    {
        // MessageBox.Show("event raised");
        richTextBox1.Text = "t3 is elapsed ";// 
      }

问题::事件触发后 richTextBox1 中没有任何内容!我试过 MessageBox 并且效果很好。可能是什么问题??

您的问题如下: 您的计时器的事件处理程序是 运行 在与您的 UI 不同的线程上。你需要像

这样调用控件
if(richTextBox1.InvokeRequired == true)
{
    richTextBox1.Invoke((MethodInvoker)delegate
    {
      richTextBox1.Text = "t3 is elapsed "
    });
}
else
{
    richTextBox1.Text = "t3 is elapsed ";
}

才能正确访问它。那是因为 UI 对象与其线程相关。例如,可以在每个线程中创建一个 MessageBox - 因为您的 Box 还不存在。