DesignerOptionService Class
Provides a base class for getting and setting option values for a designer.
Assembly: System (in System.dll)
Note: |
|---|
The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: SharedState. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes. |
The DesignerOptionService class provides a collection of options. Each of these option collections has an indexer that enables it to be further filtered. Each option collection contains its own set of options, as well as a rollup of all of its child options. In the event of a naming conflict between properties, the outermost options object takes precedence. The following Tools | Options user interface (UI) structure shows how the outermost options object takes on greater importance:
WindowsFormsDesigner | General
SnapToGrid
ShowGrid
GridSize
Given a IDesignerOptionService named service, to get to the value of the GridSize property, you would make the following call:
This works, until you want to move GridSize to another page. Also, IDesignerOptionService provides no discovery mechanism. If you do not know what string to pass in, the service cannot find the property value.
The DesignerOptionService class addresses these issues. You can query collections, and there is a type converter defined on the DesignerOptionService.DesignerOptionCollection object that marks the collection as expandable. With this type converter, you can pass the entire designer option service to a property window and visually inspect the service.
The following code example demonstrates accessing the DesignerOptionService to display the current values of the standard options.
Imports System Imports System.Collections Imports System.ComponentModel Imports System.ComponentModel.Design Imports System.Drawing Imports System.Data Imports System.Windows.Forms Imports System.Windows.Forms.Design ' This control demonstrates retrieving the standard ' designer option service values in design mode. Public Class DesignerOptionServiceControl Inherits System.Windows.Forms.UserControl Private designerOptionSvc As DesignerOptionService Public Sub New() Me.BackColor = Color.Beige Me.Size = New Size(404, 135) End Sub Public Overrides Property Site() As System.ComponentModel.ISite Get Return MyBase.Site End Get Set MyBase.Site = value ' If siting component, attempt to obtain an DesignerOptionService. If (MyBase.Site IsNot Nothing) Then designerOptionSvc = CType(Me.GetService(GetType(DesignerOptionService)), DesignerOptionService) End If End Set End Property ' Displays control information and current DesignerOptionService ' values, if available. Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs) e.Graphics.DrawString("DesignerOptionServiceControl", _ New Font("Arial", 9), _ New SolidBrush(Color.Blue), 4, 4) If Me.DesignMode Then e.Graphics.DrawString("Currently in design mode", _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 4, 18) Else e.Graphics.DrawString("Not in design mode. Cannot access DesignerOptionService.", _ New Font("Arial", 8), _ New SolidBrush(Color.Red), 4, 18) End If If (MyBase.Site IsNot Nothing) AndAlso (designerOptionSvc IsNot Nothing) Then e.Graphics.DrawString("DesignerOptionService provides access to the table of option values listed when", _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 4, 38) e.Graphics.DrawString("the Windows Forms Designer\General tab of the Tools\Options menu is selected.", _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 4, 50) e.Graphics.DrawString("Table of standard value names and current values", _ New Font("Arial", 8), _ New SolidBrush(Color.Red), 4, 76) ' Displays a table of the standard value names and current values. Dim ypos As Integer = 90 ' Obtains and shows the size of the standard design-mode grid square. Dim pd As PropertyDescriptor pd = designerOptionSvc.Options.Properties("GridSize") e.Graphics.DrawString("GridSize", _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 4, ypos) e.Graphics.DrawString(pd.GetValue(Nothing).ToString(), _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 200, ypos) ypos += 12 ' Uncomment the following code to demonstrate that this ' alternate syntax works the same as the previous syntax. 'pd = designerOptionSvc.Options["WindowsFormsDesigner"].Properties["GridSize"]; 'e.Graphics.DrawString("GridSize", ' new Font("Arial", 8), ' new SolidBrush(Color.Black), 4, ypos); 'e.Graphics.DrawString(pd.GetValue(null).ToString(), ' new Font("Arial", 8), ' new SolidBrush(Color.Black), 200, ypos); 'ypos += 12; 'pd = designerOptionSvc.Options["WindowsFormsDesigner"]["General"].Properties["GridSize"]; 'e.Graphics.DrawString("GridSize", ' new Font("Arial", 8), ' new SolidBrush(Color.Black), 4, ypos); 'e.Graphics.DrawString(pd.GetValue(null).ToString(), ' new Font("Arial", 8), ' new SolidBrush(Color.Black), 200, ypos); 'ypos += 12; ' Obtains and shows whether the design mode surface grid is enabled. pd = designerOptionSvc.Options.Properties("ShowGrid") e.Graphics.DrawString("ShowGrid", _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 4, ypos) e.Graphics.DrawString(pd.GetValue(Nothing).ToString(), _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 200, ypos) ypos += 12 ' Obtains and shows whether components should be aligned with the surface grid. pd = designerOptionSvc.Options.Properties("SnapToGrid") e.Graphics.DrawString("SnapToGrid", _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 4, ypos) e.Graphics.DrawString(pd.GetValue(Nothing).ToString(), _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 200, ypos) ypos += 12 ' Obtains and shows which layout mode is selected. pd = designerOptionSvc.Options.Properties("LayoutMode") e.Graphics.DrawString("LayoutMode", _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 4, ypos) e.Graphics.DrawString(pd.GetValue(Nothing).ToString(), _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 200, ypos) ypos += 12 ' Obtains and shows whether the Toolbox is automatoically ' populated with custom controls and components. pd = designerOptionSvc.Options.Properties("AutoToolboxPopulate") e.Graphics.DrawString("AutoToolboxPopulate", _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 4, ypos) e.Graphics.DrawString(pd.GetValue(Nothing).ToString(), _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 200, ypos) ypos += 12 ' Obtains and shows whether the component cache is used. pd = designerOptionSvc.Options.Properties("UseOptimizedCodeGeneration") e.Graphics.DrawString("Optimized Code Generation", _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 4, ypos) e.Graphics.DrawString(pd.GetValue(Nothing).ToString(), _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 200, ypos) ypos += 12 ' Obtains and shows whether smart tags are automatically opened. pd = designerOptionSvc.Options.Properties("ObjectBoundSmartTagAutoShow") e.Graphics.DrawString("Automatically Open Smart Tags", _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 4, ypos) e.Graphics.DrawString(pd.GetValue(Nothing).ToString(), _ New Font("Arial", 8), _ New SolidBrush(Color.Black), 200, ypos) End If End Sub End Class
System.ComponentModel.Design.DesignerOptionService
System.Windows.Forms.Design.WindowsFormsDesignerOptionService
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note: