ang0716 2021-07-29 11:27 采纳率: 33.3%
浏览 92
已结题

关于C# “线程间操作无效: 从不是创建控件“frmMain”的线程访问它”

在定时器中加载线程,并在线程中调用“ShowMessang”

private void timMessage_Tick(object sender, EventArgs e)
{
            timMessage.Enabled = false;
            Thread tMessage = new Thread(new ThreadStart(ShowMessage));
}

线程中调用的方法

private void ShowMessage()
{
           ........
                frmMessage fmessage = new frmMessage(); frmMessage.iMessageCount = iCount;
                if (HaveOpened(this, "frmMessage"))
                {
                    Point p = new Point(Screen.PrimaryScreen.WorkingArea.Width - fmessage.Width, Screen.PrimaryScreen.WorkingArea.Height - 50);
                    fmessage.PointToScreen(p); fmessage.Location = p;
                    **fmessage.MdiParent = this;   //在指定MDI窗体时报错**
                    fmessage.Show();
                    for (int i = 0; i <= fmessage.Height; i++) { fmessage.Location = new Point(p.X, p.Y - i); System.Threading.Thread.Sleep(10); }
                }
.......
}

望高人指定,或共同探讨

  • 写回答

1条回答 默认 最新

  • Iawfy_ 2021-07-29 11:54
    关注

    委托

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月29日
  • 已采纳回答 7月29日
  • 创建了问题 7月29日