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>