有没有办法可以将Winforms表单对象传递给包含制表符控件的主窗体,并让主窗体将此窗体对象加载到其中一个制表符中?
另外一个问题:表单对象将从与主窗体不同的线程实例化。
答案 0 :(得分:4)
我不认为在不同的线程上创建Forms时它会起作用,但是你通常会通过将Form的TopLevel属性设置为False然后将其添加到tab页面控件(或任何其他父控件)来实现这一点。
编辑:您还需要将Visible属性设置为True,因为默认情况下会隐藏表单。
另外,我只是试过这个,它确实适用于从另一个线程创建的按钮。但是当我使用Form执行它时,我得到了一个InvalidOperationException。
答案 1 :(得分:3)
答案 2 :(得分:2)
您应该可以从Add
上的Controls
集合中致电TabPage
。您可能需要相应地设置Anchor
和Dock
属性,以便控件填满整个表面(假设这是您想要的)。
我不认为从另一个线程创建控件是一个很好的途径。我相信,就使用适当的同步机制等而言,你完全有能力使这种手脱离线程安全。但是,所有UI元素都具有线程亲和性,这意味着一旦创建了该UI元素,它就属于创建线程。简单地创建(只是构造函数调用)可能没有任何问题,但我采用的规则是在UI线程上严格保持所有 UI元素逻辑。