【发布时间】:2023-03-30 04:18:01
【问题描述】:
我想要一个 MainForm 将另外两个单独的表单带到前面,只要它本身被带到前面。我正在使用 MainForm 的 Activated 事件处理程序来执行此操作,但是将其他两个表单放在前面并将焦点返回到 MainForm 会导致问题:
private void MainForm_Activated(object sender, EventArgs e)
{
tilemapForm.BringToFront();
tilesetForm.BringToFront();
this.BringToFront();
this.Focus();
}
每当触发此事件时,所有三个表单的标题栏文本都会消失,并且表单会在完成前疯狂闪烁几秒钟。
删除 this.Focus() 会修复它,但随后会禁用 MainForm 的控制框,因此无法通过控制框最小化或关闭它。有没有办法解决这个困境?
【问题讨论】:
-
这是什么类型的应用程序?您如何创建/显示您的两个附加表单,如果您在主表单中创建它们,请尝试将主表单添加为
tilemapForm.Show(this)中的拥有表单。 -
因为您的代码停用了 Mainform...
-
谢谢马克,这正是我想要做的。我不希望 tilemapForm 和 tilesetForm 位于 MainForm 的绘图区域内,即子窗体,但我希望它们在大多数其他方面被视为子窗体。似乎将两个表单的 Owner 属性设置为 MainForm 就是这样做的。
-
@MarkHall 应该设置答案以关闭此线程。