您的问题让我想起了 WPF 中类似问题的解决方案。让我尽力解释问题和他的解决方案。
问题是为业务逻辑提供一种方法,通过“交互请求”与用户交互,然后在用户界面的适当区域进行处理。业务逻辑将不知道交互中涉及的 UI,但会启动请求事件,然后由 UI 处理。我再也找不到这个例子了,无论如何它是以 WPF 为中心的,但他基本上是通过创建一个模仿模态对话框外观的控件来处理它。然后,他创建了一个 Action 来处理 Interaction 事件并自动将 Faux Dialog 插入 TabPage 中其他控件之上的 TabPage。一个技巧是 Action 假设 Faux Dialog 将被插入到作为其父级的 Grid Control 中。
所以基本上这就是我要说的......作为一种可能的解决方案
- 创建一个看起来像模态对话框的 UserControl。除了它包含在透明区域中以填充其容器。
- 将其插入到 TabPage 的所有其他控件之上的控件集合中。将其停靠以填充 TabPage。
其实这里有几张图。。
然后当你添加用户控件时......你有一个假对话框,实际上它周围有一个透明区域,填充标签页......
这里的想法是您将无法与其下方的控件进行交互,因为它位于顶部,但它仍将位于选项卡页面内,因此它不会影响与其他选项卡的交互。第二张图片的蓝色部分实际上应该是透明的,给你一种它不存在的错觉,但防止与它下面的控件交互。
但是,这有一些限制,因为您不能使对话框大于标签页。
我想也许我是在建议你“在盒子里”思考?