แก้ไข

แชร์ผ่าน


MenuDesigner Class

Definition

Provides design-time support in a visual designer for the Menu control.

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
Inheritance
Implements

Examples

The following code example shows how to extend the MenuDesigner class to change the appearance of controls that are derived from the Menu control at design time.

The example derives the MyMenu class from the Menu. The MyMenu class is a copy of the Menu. The example also derives the MyMenuDesigner class from the MenuDesigner class, and then applies a DesignerAttribute attribute for the MyMenuDesigner on the MyMenu class.

The MyMenuDesigner overrides the following MenuDesigner members:

  • The GetDesignTimeHtml method to draw an orange, dotted border around the control to make its extent more visible.

  • The GetErrorDesignTimeHtml method to generate the markup for a placeholder that includes the error message, which is rendered in red, bold text.

  • The GetEmptyDesignTimeHtml to generate the markup for a placeholder that contains a message indicating that no menu items are defined.

  • The Initialize method to throw an ArgumentException exception, if the associated control is not a MyMenu object.

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

Remarks

The Menu class provides a hierarchical menu Web server control.

In a visual designer, when you switch from Source to Design view, the markup source code that describes the associated Menu control is parsed and a design-time version of the control is created on the design surface. When you switch back to Source view, the design-time control is persisted to markup and added to the existing markup for the Web page. The MenuDesigner class provides design-time support for Menu controls in a visual designer.

The ActionLists property returns a DesignerActionListCollection object, which typically contains an object that is derived from the DesignerActionList class for each level in the inheritance tree of the designer. The AutoFormats property returns a collection of formatting schemes for display in the Auto Format dialog box.

The TemplateGroups property returns a collection of template groups for the templates of the associated Menu control. The UsePreviewControl property always returns true, indicating that the designer creates a temporary copy of the associated Menu to generate the design-time markup.

The MenuDesigner class methods provide the following functionality:

  • The Initialize method prepares the designer to view, edit, and design the associated Menu control. The GetDesignTimeHtml method returns the markup that is used to render the associated Menu at design time.

  • The GetEmptyDesignTimeHtml method gets the markup that renders a placeholder for the associated control at design time when no markup is otherwise available. The GetErrorDesignTimeHtml method provides the markup that renders the associated control at design time when an error has occurred.

  • The DataBind method binds the associated Menu control to the design-time data source. The GetSampleDataSource method constructs a sample data source that can be used at design time for the associated control.

Constructors

MenuDesigner()

Initializes a new instance of the MenuDesigner class.

Properties

ActionLists

Gets the designer action list collection for this designer.

AllowResize

Gets a value indicating whether the control can be resized in the design-time environment.

(Inherited from ControlDesigner)
AssociatedComponents

Gets the collection of components associated with the component managed by the designer.

(Inherited from ComponentDesigner)
AutoFormats

Gets the collection of predefined formatting schemes to display in the Auto Format dialog box.

Behavior
Obsolete.

Gets or sets the DHTML behavior that is associated with the designer.

(Inherited from HtmlControlDesigner)
CanRefreshSchema

Gets a value that indicates whether the provider can refresh the schema.

Component

Gets the component this designer is designing.

(Inherited from ComponentDesigner)
DataBindings

Gets the data bindings collection for the current control.

(Inherited from HtmlControlDesigner)
DataBindingsEnabled

Gets a value indicating whether data binding is supported by the containing region for the associated control.

(Inherited from ControlDesigner)
DataSource

Gets or sets the value of the DataSource property for the associated control.

(Inherited from BaseDataBoundControlDesigner)
DataSourceDesigner

Provides access to the designer of the data source, when one is selected for data binding.

(Inherited from HierarchicalDataBoundControlDesigner)
DataSourceID

Gets or sets the value of the DataSourceID property of the underlying BaseDataBoundControl object.

(Inherited from BaseDataBoundControlDesigner)
DesignerState

Gets an object that is used to persist data for the associated control at design time.

(Inherited from ControlDesigner)
DesignerView

Gets the default view of the data source that is bound to the associated control.

(Inherited from HierarchicalDataBoundControlDesigner)
DesignTimeElement
Obsolete.

Gets the design-time object representing the control that is associated with the HtmlControlDesigner object on the design surface.

(Inherited from HtmlControlDesigner)
DesignTimeElementView
Obsolete.

Gets the view-control object for the control designer.

(Inherited from ControlDesigner)
DesignTimeHtmlRequiresLoadComplete
Obsolete.

Gets a value indicating whether the design host must finish loading before the GetDesignTimeHtml method can be called.

(Inherited from ControlDesigner)
Expressions

Gets the expression bindings for the current control at design time.

(Inherited from HtmlControlDesigner)
HidePropertiesInTemplateMode

Gets a value indicating whether the properties of the associated control are hidden when the control is in template mode.

(Inherited from ControlDesigner)
ID

Gets or sets the ID string for the control.

(Inherited from ControlDesigner)
InheritanceAttribute

Gets an attribute that indicates the type of inheritance of the associated component.

(Inherited from ComponentDesigner)
Inherited

Gets a value indicating whether this component is inherited.

(Inherited from ComponentDesigner)
InTemplateMode

Gets a value indicating whether the control is in either template viewing or editing mode in the design host. The InTemplateMode property is read-only.

(Inherited from ControlDesigner)
IsDirty
Obsolete.

Gets or sets a value indicating whether the Web server control has been marked as changed.

(Inherited from ControlDesigner)
ParentComponent

Gets the parent component for this designer.

(Inherited from ComponentDesigner)
ReadOnly
Obsolete.

Gets or sets a value indicating whether the properties of the control are read-only at design time.

(Inherited from ControlDesigner)
RootDesigner

Gets the control designer for the Web Forms page that contains the associated control.

(Inherited from ControlDesigner)
Schema

Gets a schema that describes the data source view for the associated Menu control.

SetTextualDefaultProperty (Inherited from ComponentDesigner)
ShadowProperties

Gets a collection of property values that override user settings.

(Inherited from ComponentDesigner)
ShouldCodeSerialize
Obsolete.

Gets or sets a value indicating whether to create a field declaration for the control in the code-behind file for the current design document during serialization.

(Inherited from HtmlControlDesigner)
Tag

Gets an object representing the HTML markup element for the associated control.

(Inherited from ControlDesigner)
TemplateGroups

Gets a collection of template groups for the templates of the associated control.

UseDataSourcePickerActionList

Gets a value that indicates whether the control should render its default action lists, which contain a data source ID drop-down list and related tasks.

(Inherited from HierarchicalDataBoundControlDesigner)
UsePreviewControl

Gets a value indicating whether the designer should use a copy of the associated control or use the control itself to generate the design-time markup.

Verbs

Gets the design-time verbs supported by the component that is associated with the designer.

(Inherited from ComponentDesigner)
ViewControl

Gets or sets a Web server control that can be used for previewing the design-time HTML markup.

(Inherited from ControlDesigner)
ViewControlCreated

Gets or sets a value indicating whether a View control has been created for display on the design surface.

(Inherited from ControlDesigner)
Visible

Gets a value that indicates whether the control is visible at design time.

(Inherited from ControlDesigner)

Methods

ConnectToDataSource()

Performs the actions that are necessary to connect to the current data source.

(Inherited from HierarchicalDataBoundControlDesigner)
CreateDataSource()

Creates a new data source for the associated control.

(Inherited from HierarchicalDataBoundControlDesigner)
CreateErrorDesignTimeHtml(String, Exception)

Creates the HTML markup to display a specified exception error message at design time.

(Inherited from ControlDesigner)
CreateErrorDesignTimeHtml(String)

Creates HTML markup to display a specified error message at design time.

(Inherited from ControlDesigner)
CreatePlaceHolderDesignTimeHtml()

Provides a simple rectangular placeholder representation that displays the type and ID of the control.

(Inherited from ControlDesigner)
CreatePlaceHolderDesignTimeHtml(String)

Provides a simple rectangular placeholder representation that displays the type and ID of the control, and also additional specified instructions or information.

(Inherited from ControlDesigner)
CreateViewControl()

Returns a copy of the associated control for viewing or rendering on the design surface.

(Inherited from ControlDesigner)
DataBind(BaseDataBoundControl)

Binds the associated control to the design-time data source.

DisconnectFromDataSource()

Performs the actions that are necessary to disconnect from the current data source.

(Inherited from HierarchicalDataBoundControlDesigner)
Dispose()

Releases all resources used by the ComponentDesigner.

(Inherited from ComponentDesigner)
Dispose(Boolean)

Releases the unmanaged resources that are used by the BaseDataBoundControlDesigner object, and optionally releases the managed resources.

(Inherited from BaseDataBoundControlDesigner)
DoDefaultAction()

Creates a method signature in the source code file for the default event on the component and navigates the user's cursor to that location.

(Inherited from ComponentDesigner)
Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetBounds()

Retrieves the coordinates of the rectangle representing the boundaries for the control as displayed on the design surface.

(Inherited from ControlDesigner)
GetDesignTimeDataSource()

Gets a data source that can be used at design time for the associated control.

(Inherited from HierarchicalDataBoundControlDesigner)
GetDesignTimeHtml()

Gets the markup that is used to render the associated control at design time.

GetDesignTimeHtml(DesignerRegionCollection)

Retrieves the HTML markup to display the control and populates the collection with the current control designer regions.

(Inherited from ControlDesigner)
GetEditableDesignerRegionContent(EditableDesignerRegion)

Returns the content for an editable region of the design-time view of the associated control.

(Inherited from ControlDesigner)
GetEmptyDesignTimeHtml()

Gets the markup that renders a placeholder for the associated control at design time when no markup is otherwise available.

GetErrorDesignTimeHtml(Exception)

Provides the markup that renders the associated control at design time when an error has occurred.

GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetPersistenceContent()

Retrieves the persistable inner HTML markup of the control at design time.

(Inherited from ControlDesigner)
GetPersistInnerHtml()
Obsolete.

Retrieves the persistable inner HTML markup of the control.

(Inherited from ControlDesigner)
GetSampleDataSource()

Constructs a sample data source to use at design time for the associated control.

GetService(Type)

Attempts to retrieve the specified type of service from the design mode site of the designer's component.

(Inherited from ComponentDesigner)
GetType()

Gets the Type of the current instance.

(Inherited from Object)
GetViewRendering()

Retrieves an object that contains the design-time markup for the content and regions of the associated control.

(Inherited from ControlDesigner)
Initialize(IComponent)

Prepares the designer to view, edit, and design the associated control.

InitializeExistingComponent(IDictionary)

Reinitializes an existing component.

(Inherited from ComponentDesigner)
InitializeNewComponent(IDictionary)

Initializes a newly created component.

(Inherited from ComponentDesigner)
InitializeNonDefault()
Obsolete.
Obsolete.

Initializes the settings for an imported component that is already initialized to settings other than the defaults.

(Inherited from ComponentDesigner)
Invalidate()

Invalidates the whole area of the control that is displayed on the design surface and signals the control designer to redraw the control.

(Inherited from ControlDesigner)
Invalidate(Rectangle)

Invalidates the specified area of the control that is displayed on the design surface and signals the control designer to redraw the control.

(Inherited from ControlDesigner)
InvokeGetInheritanceAttribute(ComponentDesigner)

Gets the InheritanceAttribute of the specified ComponentDesigner.

(Inherited from ComponentDesigner)
IsPropertyBound(String)
Obsolete.

Retrieves a value indicating whether the specified property on the associated control is data-bound.

(Inherited from ControlDesigner)
Localize(IDesignTimeResourceWriter)

Uses the provided resource writer to persist the localizable properties of the associated control to a resource in the design host.

(Inherited from ControlDesigner)
MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
OnAutoFormatApplied(DesignerAutoFormat)

Called when a predefined, automatic formatting scheme has been applied to the associated control.

(Inherited from ControlDesigner)
OnBehaviorAttached()

Called when the control designer is attached to a Behavior object.

(Inherited from ControlDesigner)
OnBehaviorDetaching()
Obsolete.

Called when a behavior disassociates from the element.

(Inherited from HtmlControlDesigner)
OnBindingsCollectionChanged(String)
Obsolete.

Called when the data-binding collection changes.

(Inherited from ControlDesigner)
OnClick(DesignerRegionMouseEventArgs)

Called by the design host when the user clicks the associated control at design time.

(Inherited from ControlDesigner)
OnComponentChanged(Object, ComponentChangedEventArgs)

Called when the associated control changes.

(Inherited from ControlDesigner)
OnComponentChanging(Object, ComponentChangingEventArgs)

Represents the method that will handle the ComponentChanging event for the associated control.

(Inherited from ControlDesigner)
OnControlResize()
Obsolete.

Called when the associated Web server control has been resized in the design host at design time.

(Inherited from ControlDesigner)
OnDataSourceChanged(Boolean)

Called when the data source of the associated BaseDataBoundControl object changes.

(Inherited from BaseDataBoundControlDesigner)
OnPaint(PaintEventArgs)

Called when the control designer draws the associated control on the design surface, if the CustomPaint value is true.

(Inherited from ControlDesigner)
OnSchemaRefreshed()

Called when the data source of the associated BaseDataBoundControl object loads a new schema.

(Inherited from BaseDataBoundControlDesigner)
OnSetComponentDefaults()
Obsolete.
Obsolete.

Sets the default properties for the component.

(Inherited from ComponentDesigner)
OnSetParent()

Provides a way to perform additional processing when the associated control is attached to a parent control.

(Inherited from HtmlControlDesigner)
PostFilterAttributes(IDictionary)

Allows a designer to change or remove items from the set of attributes that it exposes through a TypeDescriptor.

(Inherited from ComponentDesigner)
PostFilterEvents(IDictionary)

Allows a designer to change or remove items from the set of events that it exposes through a TypeDescriptor.

(Inherited from ComponentDesigner)
PostFilterProperties(IDictionary)

Allows a designer to change or remove items from the set of properties that it exposes through a TypeDescriptor.

(Inherited from ComponentDesigner)
PreFilterAttributes(IDictionary)

Allows a designer to add to the set of attributes that it exposes through a TypeDescriptor.

(Inherited from ComponentDesigner)
PreFilterEvents(IDictionary)

Sets the list of events that are exposed at design-time for the TypeDescriptor object for the component.

(Inherited from HtmlControlDesigner)
PreFilterProperties(IDictionary)

Used by the designer to remove properties from or add additional properties to the display in the Properties grid or to shadow properties of the associated control.

(Inherited from HierarchicalDataBoundControlDesigner)
RaiseComponentChanged(MemberDescriptor, Object, Object)

Notifies the IComponentChangeService that this component has been changed.

(Inherited from ComponentDesigner)
RaiseComponentChanging(MemberDescriptor)

Notifies the IComponentChangeService that this component is about to be changed.

(Inherited from ComponentDesigner)
RaiseResizeEvent()
Obsolete.

Raises the OnControlResize() event.

(Inherited from ControlDesigner)
RefreshSchema(Boolean)

Refreshes the schema of the data source view for the associated Menu control.

RegisterClone(Object, Object)

Registers internal data in a cloned control.

(Inherited from ControlDesigner)
SetEditableDesignerRegionContent(EditableDesignerRegion, String)

Specifies the content for an editable region of the control at design time.

(Inherited from ControlDesigner)
SetRegionContent(EditableDesignerRegion, String)

Specifies the content for an editable region in the design-time view of the control.

(Inherited from ControlDesigner)
SetViewFlags(ViewFlags, Boolean)

Assigns the specified bitwise ViewFlags enumeration to the specified flag value.

(Inherited from ControlDesigner)
ToString()

Returns a string that represents the current object.

(Inherited from Object)
UpdateDesignTimeHtml()

Refreshes the design-time HTML markup for the associated Web server control by calling the GetDesignTimeHtml method.

(Inherited from ControlDesigner)

Explicit Interface Implementations

IDataBindingSchemaProvider.CanRefreshSchema

Gets a value indicating whether the provider can refresh the schema. For a description of this member, see the CanRefreshSchema property.

IDataBindingSchemaProvider.RefreshSchema(Boolean)

For a description of this member, see the RefreshSchema(Boolean) method.

IDataBindingSchemaProvider.Schema

Gets the current schema object for the designer. For a description of this member, see the Schema property.

IDesignerFilter.PostFilterAttributes(IDictionary)

For a description of this member, see the PostFilterAttributes(IDictionary) method.

(Inherited from ComponentDesigner)
IDesignerFilter.PostFilterEvents(IDictionary)

For a description of this member, see the PostFilterEvents(IDictionary) method.

(Inherited from ComponentDesigner)
IDesignerFilter.PostFilterProperties(IDictionary)

For a description of this member, see the PostFilterProperties(IDictionary) method.

(Inherited from ComponentDesigner)
IDesignerFilter.PreFilterAttributes(IDictionary)

For a description of this member, see the PreFilterAttributes(IDictionary) method.

(Inherited from ComponentDesigner)
IDesignerFilter.PreFilterEvents(IDictionary)

For a description of this member, see the PreFilterEvents(IDictionary) method.

(Inherited from ComponentDesigner)
IDesignerFilter.PreFilterProperties(IDictionary)

For a description of this member, see the PreFilterProperties(IDictionary) method.

(Inherited from ComponentDesigner)
ITreeDesigner.Children

For a description of this member, see the Children property.

(Inherited from ComponentDesigner)
ITreeDesigner.Parent

For a description of this member, see the Parent property.

(Inherited from ComponentDesigner)

Applies to

See also