我正在使用telerik控件。 所以我想问一下, 在winforms应用程序中,是否可以在同一位置添加多个面板并一次显示一个,就像显示/隐藏属性一样。
答案 0 :(得分:1)
确保已将所有面板控件放在同一容器或表单中。然后您可以使用Visible
属性来显示和隐藏面板。 BringFront
和SendToBack
功能将用于将面板置于顶部或将其发送回去。如果您已将任何面板放在另一个面板中,那么当您隐藏父面板时,该面板将会消失。因此,确保所有面板的父控件必须相同。要确定父控件,只需选择该面板并按退出键以选择其父级。
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。)