Panel Web 服务器控件在 ASP.NET 网页内提供了一种容器控件,您可以将它用作静态文本和其他控件的父级。
一、背景
可以将 Panel 控件用作其他控件的容器。当以编程方创建内容并需要一种将内容插入到页中的方法时,此方法尤为适用。以下部分描述了可以使用 Panel 控件的其他方法。
1、动态生成的控件的容器
Panel 控件为在运行时创建的控件提供了一个方便的容器。
2、对控件和标记进行分组
对于一组控件和相关的标记,可以通过把其放置在 Panel 控件中,然后操作此 Panel 控件的方式将它们作为一个单元进行管理。例如,可以通过设置面板的 Visible 属性来隐藏或显示该面板中的一组控件。
3、具有默认按钮的窗体
可将 TextBox 控件和 Button 控件放置在 Panel 控件中,然后通过将 Panel 控件的 DefaultButton 属性设置为面板中某个按钮的 ID 来定义一个默认的按钮。如果用户在面板内的文本框中进行输入时按 Enter,这与用户单击特定的默认按钮具有相同的效果。这有助于用户更有效地使用项目窗体。
4、向其他控件添加滚动条
有些控件(如 TreeView 控件)没有内置的滚动条。通过在 Panel 控件中放置滚动条控件,可以添加滚动行为。若要向 Panel 控件添加滚动条,请设置 Height 和 Width 属性,将 Panel 控件限制为特定的大小,然后再设置 ScrollBars 属性。
4、页上的自定义区域
可使用 Panel 控件在页上创建具有自定义外观和行为的区域,如下所示:
·创建一个带标题的分组框: 可设置 GroupingText 属性来显示标题。呈现页时,Panel 控件的周围将显示一个包含标题的框,其标题是您指定的文本。
说明: 不能在 Panel 控件中同时指定滚动条和分组文本。如果设置了分组文本,其优先级高于滚动条。
·在页上创建具有自定义颜色或其他外观的区域: Panel 控件支持外观属性(例如 BackColor 和 BorderWidth),可以设置外观属性为页上的某个区域创建独特的外观。
说明: 设置 GroupingText 属性将自动在 Panel 控件周围呈现一个边框。
二、如何:向 Web 窗体页添加 Panel 控件
1、在“设计”视图中,从工具箱的“标准”选项卡中,将 Panel 控件拖到页面上。
2、若要创建静态文本,请在控件中单击,然后键入文本。若要添加控件,请将它们从“工具箱”拖到 Panel 控件中。
说明: 若要在运行时向 Panel 控件添加静态文本,则需要创建 Literal 控件并设置它的 Text 属性。然后,可以通过编程方式将 Literal 对象添加到面板中,方法与添加任何控件相同。有关添加控件的详细信息,请参见 如何:以编程方式向 ASP.NET 网页添加控件。
3、还可以选择拖动面板的边框以调整控件的大小。
说明: 该控件会自动调整自身的大小以显示其所有的子控件(即使它们超出了设置的高度)。
4、另外还可以选择,设置 Panel 控件的属性(如下表所述),以指定窗格与其子控件的交互方式。
属性
说明
HorizontalAlign
指定子控件在面板内的对齐方式(左对齐、右对齐、居中或两端对齐)。
Wrap
指定面板内过宽的内容是换到下一行,还是在面板边缘处截断。
Direction
指定控件的内容是从左至右呈现还是从右至左呈现。当在页面上创建与整个页面的方向不同的区域时,此属性非常有用。
ScrollBars
如果已经设置了 Height 和 Width 属性以将 Panel 控件限制为特定的大小,则可以通过设置 ScrollBars 属性来添加滚动条。
GroupingText
在 Panel 控件周围呈现边框和标题。
说明:
设置 GroupingText 属性会导致滚动条不显示(如果您指定了滚动条)。
三、Panel 类
Panel 控件是其他控件的容器。当要以编程方式生成控件、隐藏/显示一组控件或本地化一组控件时,该控件尤其有用。
Direction 属性对于本地化 Panel 控件的内容以显示从右到左书写的语言(如阿拉伯语或希伯来语)的文本非常有用。
Panel 控件提供了几个属性,使用这些属性可以自定义该控件内容的行为和显示。使用 BackImageUrl 属性为 Panel 控件显示一个自定义图像。使用 ScrollBars 属性为控件指定滚动条。
示例
1、下面的示例说明如何使用 Panel 控件以编程方式生成控件和隐藏/显示一组控件。
说明: 下面的代码示例使用单文件代码模型,当它直接复制到代码隐藏文件时可能不能正常工作。此代码示例必须被复制到具有 .aspx 扩展名的空文本文件中。
<%@ Page Language="C#" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head>
<title>Panel Example</title>
<script runat="server">
void Page_Load(Object sender, EventArgs e) {
// Show or hide the Panel contents.
if (Check1.Checked) {
Panel1.Visible=false;
}
else {
Panel1.Visible=true;
}
// Generate the Label controls.
int numlabels = Int32.Parse(DropDown1.SelectedItem.Value);
for (int i=1; i<=numlabels; i++) {
Label l = new Label();
l.Text = "Label" + (i).ToString();
l.ID = "Label" + (i).ToString();
Panel1.Controls.Add(l);
Panel1.Controls.Add(new LiteralControl("<br />"));
}
// Generate the Textbox controls.
int numtexts = Int32.Parse(DropDown2.SelectedItem.Value);
for (int i=1; i<=numtexts; i++) {
TextBox t = new TextBox();
t.Text = "TextBox" + (i).ToString();
t.ID = "TextBox" + (i).ToString();
Panel1.Controls.Add(t);
Panel1.Controls.Add(new LiteralControl("<br />"));
}
}
</script>
</head>
<body>
<h3>Panel Example</h3>
<form id="form1" runat="server">
<asp:Panel id="Panel1" runat="server"
BackColor="gainsboro"
Height="200px"
Width="300px">
Panel1: Here is some static content...
<br />
</asp:Panel>
<br />
Generate Labels:
<asp:DropDownList id="DropDown1" runat="server">
<asp:ListItem Value="0">0</asp:ListItem>
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
<asp:ListItem Value="3">3</asp:ListItem>
<asp:ListItem Value="4">4</asp:ListItem>
</asp:DropDownList>
<br />
Generate TextBoxes:
<asp:DropDownList id="DropDown2" runat="server">
<asp:ListItem Value="0">0</asp:ListItem>
<asp:ListItem Value="1">1</asp:ListItem>
<asp:ListItem Value="2">2</asp:ListItem>
<asp:ListItem Value="3">3</asp:ListItem>
<asp:ListItem Value="4">4</asp:ListItem>
</asp:DropDownList>
<br />
<asp:CheckBox id="Check1" Text="Hide Panel" runat="server"/>
<br />
<asp:Button Text="Refresh Panel" runat="server"/>
</form>
</body>