MenuDesigner 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在視覺化設計工具中,為 Menu 控制項提供設計階段支援。
public ref class MenuDesigner : System::Web::UI::Design::WebControls::HierarchicalDataBoundControlDesigner, System::Web::UI::Design::IDataBindingSchemaProvider
public class MenuDesigner : System.Web.UI.Design.WebControls.HierarchicalDataBoundControlDesigner, System.Web.UI.Design.IDataBindingSchemaProvider
type MenuDesigner = class
inherit HierarchicalDataBoundControlDesigner
interface IDataBindingSchemaProvider
Public Class MenuDesigner
Inherits HierarchicalDataBoundControlDesigner
Implements IDataBindingSchemaProvider
- 繼承
- 實作
範例
下列程式代碼範例示範如何擴充 MenuDesigner 類別,以變更在設計時間衍生自 Menu 控件的控件外觀。
此範例會 MyMenu
從 Menu衍生類別。 類別 MyMenu
是的 Menu複本。 此範例也會從 MenuDesigner 類別衍生 MyMenuDesigner
類別,然後在 類別上MyMenu
套用 DesignerAttribute 屬性MyMenuDesigner
。
The MyMenuDesigner
會覆寫下列 MenuDesigner 成員:
在 GetDesignTimeHtml 控件周圍繪製橙色虛線框線的方法,使其範圍更可見。
GetErrorDesignTimeHtml產生佔位元標記的方法,其中包含以紅色、粗體文字轉譯的錯誤訊息。
GetEmptyDesignTimeHtml,用來產生佔位元的標記,其中包含指出未定義任何功能表項的訊息。
Initialize如果相關聯的控件不是
MyMenu
物件,則擲回ArgumentException例外狀況的方法。
using System;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.Design.WebControls;
using System.ComponentModel;
using System.Security.Permissions;
using System.Drawing;
namespace Examples.CS.WebControls.Design
{
// The MyMenu is a copy of the Menu.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
[Designer(typeof(Examples.CS.WebControls.Design.MyMenuDesigner))]
public class MyMenu : Menu
{
} // MyMenu
// Override members of the MenuDesigner.
public class MyMenuDesigner : MenuDesigner
{
// Generate the design-time markup for the control when an error occurs.
protected override string GetErrorDesignTimeHtml(Exception ex)
{
// Write the error message text in red, bold.
string errorRendering =
"<span style=\"font-weight:bold; color:Red; \">" +
ex.Message + "</span>";
return CreatePlaceHolderDesignTimeHtml(errorRendering);
} // GetErrorDesignTimeHtml
// Generate the design-time markup for the control
// when the template is empty.
protected override string GetEmptyDesignTimeHtml()
{
string noElements = "Contains no menu items.";
return CreatePlaceHolderDesignTimeHtml(noElements);
} // GetEmptyDesignTimeHtml
// Generate the design-time markup.
public override string GetDesignTimeHtml()
{
// Make the control more visible in the designer. If the border
// style is None or NotSet, change the border to an orange dotted line.
MyMenu myMenuCtl = (MyMenu)ViewControl;
string markup = null;
// Check if the border style should be changed.
if (myMenuCtl.BorderStyle == BorderStyle.NotSet ||
myMenuCtl.BorderStyle == BorderStyle.None)
{
BorderStyle oldBorderStyle = myMenuCtl.BorderStyle;
Color oldBorderColor = myMenuCtl.BorderColor;
// Set the design-time properties and catch any exceptions.
try
{
myMenuCtl.BorderStyle = BorderStyle.Dotted;
myMenuCtl.BorderColor = Color.FromArgb(0xFF7F00);
// Call the base method to generate the markup.
markup = base.GetDesignTimeHtml();
}
catch (Exception ex)
{
markup = GetErrorDesignTimeHtml(ex);
}
finally
{
// Restore the properties to their original settings.
myMenuCtl.BorderStyle = oldBorderStyle;
myMenuCtl.BorderColor = oldBorderColor;
}
}
else
{
// Call the base method to generate the markup.
markup = base.GetDesignTimeHtml();
}
return markup;
} // GetDesignTimeHtml
public override void Initialize(IComponent component)
{
// Ensure that only a MyMenu can be created in this designer.
if (!(component is MyMenu))
throw new ArgumentException(
"The component is not a MyMenu control.");
base.Initialize(component);
} // Initialize
} // MyMenuDesigner
} // Examples.CS.WebControls.Design
Imports System.Web
Imports System.Web.UI.WebControls
Imports System.Web.UI.Design.WebControls
Imports System.ComponentModel
Imports System.Security.Permissions
Imports System.Drawing
Namespace Examples.VB.WebControls.Design
' The MyMenu is a copy of the Menu.
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<Designer(GetType(Examples.VB.WebControls.Design.MyMenuDesigner))> _
Public Class MyMenu
Inherits Menu
End Class
' Override members of the MenuDesigner.
Public Class MyMenuDesigner
Inherits MenuDesigner
' Generate the design-time markup for the control when an error occurs.
Protected Overrides Function GetErrorDesignTimeHtml( _
ByVal ex As Exception) As String
' Write the error message text in red, bold.
Dim errorRendering As String = _
"<span style=""font-weight:bold; color:Red; "">" & _
ex.Message & "</span>"
Return CreatePlaceHolderDesignTimeHtml(errorRendering)
End Function ' GetErrorDesignTimeHtml
' Generate the design-time markup for the control
' when the template is empty.
Protected Overrides Function GetEmptyDesignTimeHtml() As String
Dim noElements As String = "Contains no menu items."
Return CreatePlaceHolderDesignTimeHtml(noElements)
End Function ' GetEmptyDesignTimeHtml
' Generate the design-time markup.
Public Overrides Function GetDesignTimeHtml() As String
' Make the control more visible in the designer. If the border
' style is None or NotSet, change the border to an orange dotted line.
Dim myMenuCtl As MyMenu = CType(ViewControl, MyMenu)
Dim markup As String = Nothing
' Check if the border style should be changed.
If (myMenuCtl.BorderStyle = BorderStyle.NotSet Or _
myMenuCtl.BorderStyle = BorderStyle.None) Then
Dim oldBorderStyle As BorderStyle = myMenuCtl.BorderStyle
Dim oldBorderColor As Color = myMenuCtl.BorderColor
' Set the design-time properties and catch any exceptions.
Try
myMenuCtl.BorderStyle = BorderStyle.Dotted
myMenuCtl.BorderColor = Color.FromArgb(&HFF7F00)
' Call the base method to generate the markup.
markup = MyBase.GetDesignTimeHtml()
Catch ex As Exception
markup = GetErrorDesignTimeHtml(ex)
Finally
' Restore the properties to their original settings.
myMenuCtl.BorderStyle = oldBorderStyle
myMenuCtl.BorderColor = oldBorderColor
End Try
Else
' Call the base method to generate the markup.
markup = MyBase.GetDesignTimeHtml()
End If
Return markup
End Function ' GetDesignTimeHtml
Public Overrides Sub Initialize(ByVal component As IComponent)
' Ensure that only a MyMenu can be created in this designer.
If Not TypeOf component Is MyMenu Then
Throw New ArgumentException( _
"The component is not a MyMenu control.")
End If
MyBase.Initialize(component)
End Sub
End Class
End Namespace ' Examples.VB.WebControls.Design
備註
類別 Menu 提供階層式功能表 Web 伺服器控制件。
在可視化設計工具中,當您從 [來源] 切換至 [設計] 檢視時,會剖析描述相關聯 Menu 控件的標記原始程式碼,並在設計介面上建立控件的設計時間版本。 當您切換回 [來源] 檢視時,設計時間控件會保存至標記,並新增至網頁的現有標記。 類別 MenuDesigner 提供可視化設計工具中控件的設計時間支援 Menu 。
屬性會 ActionLists 傳 DesignerActionListCollection 回 物件,該物件通常包含衍生自 DesignerActionList 設計工具繼承樹狀結構中每個層級之類別的物件。 屬性會 AutoFormats 傳回 [ 自動格式 ] 對話框中顯示的格式化配置集合。
屬性 TemplateGroups 會傳回相關聯 Menu 控件範本的樣板群組集合。 屬性 UsePreviewControl 一律會傳 true
回 ,表示設計工具會建立關聯的 Menu 暫存複本,以產生設計時間標記。
類別 MenuDesigner 方法提供下列功能:
方法 Initialize 會準備設計工具,以檢視、編輯及設計相關聯的 Menu 控件。 方法會 GetDesignTimeHtml 傳回標記,這個標記用於在設計時間呈現相關聯的 Menu 。
當沒有標記可供使用時,方法 GetEmptyDesignTimeHtml 會取得在設計時間呈現相關聯控件佔位符的標記。 方法 GetErrorDesignTimeHtml 會提供標記,這個標記會在發生錯誤時,在設計時間呈現相關聯的控件。
方法 DataBind 會將關聯的 Menu 控件系結至設計時間數據源。 方法 GetSampleDataSource 會建構可在設計時間用於相關聯控件的範例數據源。
建構函式
MenuDesigner() |
初始化 MenuDesigner 類別的新執行個體。 |
屬性
ActionLists |
取得此設計工具的行動清單集合。 |
AllowResize |
取得值,指出是否可在設計階段環境中調整控制項的大小。 (繼承來源 ControlDesigner) |
AssociatedComponents |
取得元件集合,該集合與設計工具管理的元件相關聯。 (繼承來源 ComponentDesigner) |
AutoFormats |
取得要在 [自動格式化] 對話方塊中顯示之預先定義的格式化配置集合。 |
Behavior |
已淘汰.
取得或設定與設計工具相關聯的 DHTML 行為。 (繼承來源 HtmlControlDesigner) |
CanRefreshSchema |
取得值,指出提供者是否可重新整理結構描述。 |
Component |
取得這個設計工具正在設計的元件。 (繼承來源 ComponentDesigner) |
DataBindings |
取得目前控制項的資料繫結 (Data Binding) 集合。 (繼承來源 HtmlControlDesigner) |
DataBindingsEnabled |
取得值,指出關聯控制項的包含區域是否支援資料繫結。 (繼承來源 ControlDesigner) |
DataSource |
取得或設定關聯控制項的 DataSource 屬性值。 (繼承來源 BaseDataBoundControlDesigner) |
DataSourceDesigner |
在選取資料來源進行資料繫結時,提供對資料來源設計工具的存取。 (繼承來源 HierarchicalDataBoundControlDesigner) |
DataSourceID |
取得或設定基礎 DataSourceID 物件的 BaseDataBoundControl 屬性值。 (繼承來源 BaseDataBoundControlDesigner) |
DesignerState |
取得物件,用於在設計階段保存關聯控制項的資料。 (繼承來源 ControlDesigner) |
DesignerView |
取得繫結至關聯控制項的資料來源之預設檢視。 (繼承來源 HierarchicalDataBoundControlDesigner) |
DesignTimeElement |
已淘汰.
取得設計階段物件,表示與設計介面上 HtmlControlDesigner 物件相關聯的控制項。 (繼承來源 HtmlControlDesigner) |
DesignTimeElementView |
已淘汰.
取得控制項設計工具的檢視控制項物件。 (繼承來源 ControlDesigner) |
DesignTimeHtmlRequiresLoadComplete |
已淘汰.
取得值,指出設計主應用程式在呼叫 GetDesignTimeHtml 方法之前是否必須完成載入。 (繼承來源 ControlDesigner) |
Expressions |
在設計階段取得目前控制項的運算式繫結。 (繼承來源 HtmlControlDesigner) |
HidePropertiesInTemplateMode |
取得值,指示當控制項處於樣板模式時,關聯控制項的屬性是否會隱藏。 (繼承來源 ControlDesigner) |
ID |
取得或設定控制項的 ID 字串。 (繼承來源 ControlDesigner) |
InheritanceAttribute |
取得屬性 (Attribute),表示相關元件的繼承 (Inheritance) 型別。 (繼承來源 ComponentDesigner) |
Inherited |
取得值,表示是否要繼承這個元件。 (繼承來源 ComponentDesigner) |
InTemplateMode |
取得值,指出控制項在設計主應用程式中處於樣板檢視模式還是編輯模式。 InTemplateMode 屬性是唯讀的。 (繼承來源 ControlDesigner) |
IsDirty |
已淘汰.
取得或設定值,指出 Web 伺服器控制項是否已標記為變更。 (繼承來源 ControlDesigner) |
ParentComponent |
取得這個設計工具的父元件。 (繼承來源 ComponentDesigner) |
ReadOnly |
已淘汰.
取得或設定值,指出控制項屬性於設計階段是否為唯讀。 (繼承來源 ControlDesigner) |
RootDesigner |
為包含關聯控制項的 Web Form 網頁,取得控制項設計工具。 (繼承來源 ControlDesigner) |
Schema |
取得結構描述,描述相關聯之 Menu 控制項的資料來源檢視。 |
SetTextualDefaultProperty |
在視覺化設計工具中,為 Menu 控制項提供設計階段支援。 (繼承來源 ComponentDesigner) |
ShadowProperties |
取得覆寫使用者設定的屬性值集合。 (繼承來源 ComponentDesigner) |
ShouldCodeSerialize |
已淘汰.
取得或設定值,指出是否應該於序列化 (Serialization) 期間,在程式碼後置 (Code-Behind) 檔案中為目前設計文件建立控制項的欄位宣告。 (繼承來源 HtmlControlDesigner) |
Tag |
取得物件,表示關聯控制項的 HTML 標記項目。 (繼承來源 ControlDesigner) |
TemplateGroups |
取得樣板群組的集合,做為關聯控制項的樣板。 |
UseDataSourcePickerActionList |
取得值,表示控制項是否應該呈現其預設動作清單,其中包含資料來源 ID 下拉式清單和相關的工作。 (繼承來源 HierarchicalDataBoundControlDesigner) |
UsePreviewControl |
取得值,指出設計工具是應該使用相關聯控制項的複本還是控制項本身產生設計階段標記。 |
Verbs |
取得與設計工具相關元件所支援的設計階段動詞命令 (Verb)。 (繼承來源 ComponentDesigner) |
ViewControl |
取得或設定 Web 伺服器控制項,可用於預覽設計階段的 HTML 標記。 (繼承來源 ControlDesigner) |
ViewControlCreated |
取得或設定值,指出是否已建立 |
Visible |
取得值,這個值表示控制項在設計階段是否為可見的。 (繼承來源 ControlDesigner) |