4

有没有一种方法可以将 Winforms 表单对象交给包含选项卡控件的主表单,并让主表单将此表单对象加载到其中一个选项卡中?

另一个问题: 表单对象将从与主表单不同的线程实例化。

4

3 回答 3

4

我认为在不同线程上创建表单时它不会起作用,但您通常可以通过将表单的 TopLevel 属性设置为 False 然后将其添加到选项卡页控件(或任何其他父控件)来执行此操作。

编辑:您还需要将 Visible 属性设置为 True,因为默认情况下表单是隐藏的。

另外,我刚刚尝试过这个,它确实适用于从另一个线程创建的按钮之类的东西。但是当我使用表单执行此操作时,我得到了一个 InvalidOperationException。

于 2011-05-19T15:18:15.130 回答
3

你想要多文档界面(MDI)标签页浏览之类的东西吗?

于 2011-05-19T15:19:40.587 回答
2

您应该可以Add从. 您可能需要相应地设置和属性,以便控件填充整个表面(假设这是您想要的)。ControlsTabPageAnchorDock

不过,我不认为从另一个线程创建控件是一条好路。我敢肯定,只要使用适当的同步机制等,您就完全有能力使这种切换线程安全。但是,所有 UI 元素都具有线程关联性,这意味着一旦创建了 UI 元素,它就属于创建线程。简单地创建(只是一个构造函数调用)可能不会有任何问题,但我遵循将所有UI 元素逻辑完全严格地保留在 UI 线程上的规则。

于 2011-05-19T15:59:48.913 回答