我有一个C#Forms选项卡应用程序。每个TabPage左侧都有一个菜单(Outlook样式导航面板),右侧有一个Panel用于内容。
如果我想要标签页0的内容面板,我将如何获取它?我有点难过,因为我不知道如何在标签页上索引控件集合。以下用红色下划线,所以我认为它错了。
Panel panel = tabControl.TabPages[0].Controls["Panel"];
编辑:删除Panel子问题中的Window。它将被转移到一个单独的问题。
抱歉初学者问题。我是一个拥有大量MFC时间的C / C ++人,而C#UI目前有点令人沮丧。
答案 0 :(得分:1)
为了创建一个新表单,例如,您需要创建一个您想要创建的表单的变量。 示例
Form2 frm2 = new Form2();
frm2.Show();
如果您想在面板中显示该表单,那么面板将是所有者,请记住所有者和父级之间的区别 请粘贴到目前为止您所拥有的代码,我们可以建议必要的更改
答案 1 :(得分:1)
foreach (Control control in tabControl1.TabPages[0].Controls)
{
// if (control.Name == "panel1")
}
您始终可以在control.Controls
上递归调用此方法以查找任何层次结构中的控件。 control.Name
可用于查找您的特定控件。
您无法在面板内显示表单。您可以创建自定义控件,您可以在其中添加功能并将该控件添加到Panel。
答案 2 :(得分:1)
Finally, how does one display a Window in a Panel?
- 你不想这样做。如果您希望窗口和面板共享一段UI功能,请创建一个包含所有功能的用户控件,然后您可以将其放在表单或面板中。
答案 3 :(得分:1)
封装复杂UI内容的可能性是创建UserControl
。通过这种方式,您可以创建一个可重用的复杂UI,您基本上可以在表单中添加“blob”。
原因
Panel panel = tabControl.TabPages[0].Controls["Panel"];
带有下划线红色的是因为Controls
集合返回的Control
可能是Panel
,但也可能是其他内容。所以你需要施展它:
Panel panel = tabControl.TabPages[0].Controls["Panel"] as Panel;
if (panel != null)
{
// got a panel here so do something
}
另外:MSDN有一些很好的资源 - 你应该使用它。