我有一个 VS2010 解决方案(尝试模仿我的主要问题),它有 2 个项目,每个项目都有一个窗口。Mainform在 project_1 中,它引用了定义ChildForm的项目 2。
我在 MainForm 上有一个按钮,其按钮单击事件会创建一个ChildForm并显示。在显示 ChildForm 时,我可以调用在MainForm上定义的任何菜单命令(每个菜单命令都被实现以显示一个消息框),而不会出现任何问题。
但是,另一方面,我保持所有代码不变,并用 this.Invalidate() 覆盖 ChildForm 的 OnPaint 方法,如下所示
protected override void OnPaint(PaintEventArgs e)
{
this.Invalidate();
base.OnPaint(e);
}
我运行可执行文件,它打开了我的 MainForm 并单击按钮以打开我的 ChildForm,然后单击其中一个菜单命令以引发一个消息框,然后我发现 MainForm 和 ChildForms 都被冻结并被挂起而没有任何响应。
任何人都可以阐明重写 OnPaint 方法的问题所在,该方法每次都执行 this.Invalidate() 行,并建议我如何解决这个问题。
问候,库马尔