DesignerOptionService Classe

Definição

Fornece uma classe base para obter e definir valores de opções para um designer.

public ref class DesignerOptionService abstract : System::ComponentModel::Design::IDesignerOptionService
public abstract class DesignerOptionService : System.ComponentModel.Design.IDesignerOptionService
type DesignerOptionService = class
    interface IDesignerOptionService
Public MustInherit Class DesignerOptionService
Implements IDesignerOptionService
Herança
DesignerOptionService
Derivado
Implementações

Exemplos

O exemplo de código seguinte demonstra o acesso ao DesignerOptionService para mostrar os valores atuais das opções padrão.

using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace DesignerOptionServiceExample
{
    // This control demonstrates retrieving the standard 
    // designer option service values in design mode.
    public class DesignerOptionServiceControl : System.Windows.Forms.UserControl
    {		
        private DesignerOptionService designerOptionSvc;

        public DesignerOptionServiceControl()
        {
            this.BackColor = Color.Beige;
                    this.Size = new Size(404, 135);
        }
        
        public override System.ComponentModel.ISite Site
        {
            get
            {
                return base.Site;
            }
            set
            {
                base.Site = value;

                // If siting component, attempt to obtain an DesignerOptionService.
                if( base.Site != null )                            
                    designerOptionSvc = (DesignerOptionService)this.GetService(typeof(DesignerOptionService));                                   
            }
        }

        // Displays control information and current DesignerOptionService 
        // values, if available.
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            e.Graphics.DrawString("DesignerOptionServiceControl", 
                new Font("Arial", 9), 
                new SolidBrush(Color.Blue), 4, 4);

            if( this.DesignMode )
                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);
            
            if( base.Site != null && designerOptionSvc != null )
            {
                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.
                int ypos = 90;

                // Obtains and shows the size of the standard design-mode grid square.
                PropertyDescriptor pd;
                pd = designerOptionSvc.Options.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;

                // 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(null).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(null).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(null).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(null).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(null).ToString(),
                    new Font("Arial", 8),
                    new SolidBrush(Color.Black), 200, ypos);
                ypos += 12;

                // Obtains and shows whether designer actions are automatically opened.
                pd = designerOptionSvc.Options.Properties["ObjectBoundSmartTagAutoShow"];
                e.Graphics.DrawString("Automatically Open Designer Actions",
                    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);
            }
        }
    }
}
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 designer actions are automatically opened.
            pd = designerOptionSvc.Options.Properties("ObjectBoundSmartTagAutoShow")

            e.Graphics.DrawString("Automatically Open Designer Actions", _
            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

Observações

A DesignerOptionService aula oferece um conjunto de opções. Cada uma destas coleções de opções tem um indexador que permite ser filtrada adicionalmente. Cada coleção de opções contém o seu próprio conjunto de opções, bem como um conjunto de todas as suas opções filhas. No caso de um conflito de nomeação entre propriedades, o objeto de opções mais externo tem precedência. As seguintes Ferramentas | A estrutura da interface de utilizador (UI) de opções mostra como o objeto de opções mais externo ganha maior importância:

WindowsFormsDesigner | Geral

  • SnapToGrid

  • ShowGrid

  • GridSize

Dado um IDesignerOptionService nome service, para chegar ao valor da GridSize propriedade, faria a seguinte decisão:

// Obtains and shows the size of the standard design-mode grid square.
System::Drawing::Size size =  *dynamic_cast<System::Drawing::Size^>(designerOptionService->GetOptionValue( "WindowsFormsDesigner\\General", "GridSize" ));
// Obtains and shows the size of the standard design-mode grid square.
Size size = (Size)designerOptionService.GetOptionValue("WindowsFormsDesigner\\General", "GridSize");
' Obtains and shows the size of the standard design-mode grid square.
Dim size As Size = CType(designerOptionService.GetOptionValue("WindowsFormsDesigner\General", "GridSize"), Size)

Isto funciona, até quereres mudar GridSize para outra página. Além disso, IDesignerOptionService não fornece mecanismo de descoberta. Se não souber que fio passar, o serviço não consegue encontrar o valor da propriedade.

A DesignerOptionService aula aborda estas questões. Podes consultar coleções, e há um conversor de tipos definido no DesignerOptionService.DesignerOptionCollection objeto que marca a coleção como expansível. Com este tipo de conversor, pode passar todo o serviço de opções de designer para uma janela de propriedade e inspecionar visualmente o serviço.

Construtores

Name Description
DesignerOptionService()

Inicializa uma nova instância da DesignerOptionService classe.

Propriedades

Name Description
Options

Obtém a coleção de opções para este serviço.

Métodos

Name Description
CreateOptionCollection(DesignerOptionService+DesignerOptionCollection, String, Object)

Cria um novo DesignerOptionService.DesignerOptionCollection com o nome próprio e adiciona-o ao pai dado.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
PopulateOptionCollection(DesignerOptionService+DesignerOptionCollection)

Preenche um DesignerOptionService.DesignerOptionCollection.

ShowDialog(DesignerOptionService+DesignerOptionCollection, Object)

Mostra a caixa de diálogo de opções para o objeto em questão.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Description
IDesignerOptionService.GetOptionValue(String, String)

Obtém o valor de uma opção definida neste pacote.

IDesignerOptionService.SetOptionValue(String, String, Object)

Define o valor de uma opção definida neste pacote.

Aplica-se a

Ver também