您的问题让我想起了WPF中类似问题的解决方案。让我尽我所能解释问题和他的解决方案。
问题是为业务逻辑提供一种方法,通过“交互请求”与用户进行交互,然后在用户界面的适当区域处理该交互请求。业务逻辑不会意识到交互中涉及的UI,但会启动请求事件,然后将其作为UI进行处理。我再也找不到这个例子了,无论如何它都是以WPF为中心的,但他基本上是通过创建一个模仿Modal对话框外观的控件来处理它。然后,他创建了一个Action来处理Interaction事件,并自动将仿制对话框插入TabPage中其他控件顶部的TabPage。一个窍门是,假定“假”对话框将插入到作为其父项的网格控件中。
所以基本上这里就是我说的......作为一个可能的解决方案
- 创建一个用户控件,看起来就像一个模态对话框。除了包含在透明区域以填充其容器。
- 是否将其插入到TabPage的控件集合中,并放置在所有其他控件的顶部。停靠它来填充TabPage。
其实,这里的一些照片..
然后当你添加的用户控件..你有这实际上有它周围的透明区域假对话,填补标签页..
这里的想法是,你将无法与它下面的控件进行交互,因为它是上p,但它仍然在标签页内,因此它不会影响与其他标签的交互。第二幅图像的蓝色部分实际上应该是透明的,以便让您看到它不存在的错觉,但是防止与其下面的控件进行交互。
虽然这有一些限制,因为您不能让对话框大于标签页。
我想也许我建议你认为“箱内”?
快速回答是:不是真的。最好记录将TopLevel更改为false时会出现什么问题。 – LarsTech
只要不显示带有标题栏的窗体。这样做没有意义。它看起来不正确,用户可以将表单移出标签页,但无法将其取回。如果您需要标题,则只需使用标签即可。 –