是否可以在同一位置添加多个面板

时间:2014-03-07 09:29:08

标签: c# .net winforms telerik panel

我正在使用telerik控件。 所以我想问一下, 在winforms应用程序中,是否可以在同一位置添加多个面板并一次显示一个,就像显示/隐藏属性一样。

2 个答案:

答案 0 :(得分:1)

确保已将所有面板控件放在同一容器或表单中。然后您可以使用Visible属性来显示和隐藏面板。 BringFrontSendToBack功能将用于将面板置于顶部或将其发送回去。如果您已将任何面板放在另一个面板中,那么当您隐藏父面板时,该面板将会消失。因此,确保所有面板的父控件必须相同。要确定父控件,只需选择该面板并按退出键以选择其父级。

private void LoadPanels()
{
    panel1.Location = new Point(10,10);
    panel2.Location = new Point(10,10);
    panel3.Location = new Point(10,10);
    panel4.Location = new Point(10,10);
    panel5.Location = new Point(10,10);

    VisiblePanel("panel1");
}

private void VisiblePanel(string panelName)
{
    string[] panels = new string[]{"panel1","panel2","panel3","panel4","panel5"};
    for (int i=0;i<panels.Length;i++)
        this.Controls[panels[i]].Visible = (panels[i] == panelName);

    this.Controls[panelName].BringToFront(); //Not required you can remove this line.
}

答案 1 :(得分:1)

这可能是您想要考虑的一种略有不同的方法......

您是否希望能够在运行时以编程方式选择矩形区域的内容,在各种控件中进行选择以进行显示?如果是这样,您可以使用隐藏其标签(而非页面)的自定义TabControl

然后,您可以通过在运行时以编程方式更改其SelectedIndex属性来选择显示哪个页面。

这样做意味着您的表单编辑器将显示正常的选项卡控件,这使您可以更轻松地将内容添加到每个页面 - 但在运行时,选项卡将对用户隐藏;他们只会看到当前所选页面的内容。

有关如何创建此类自定义标签控件的信息,请参阅Hans Passant's answer here

(但是,您可能还想覆盖自定义选项卡控件的OnKeyDown以忽略Ctrl-Tab。)