DesignerOptionService Classe

Definizione

Fornisce una classe di base per ottenere e impostare i valori delle opzioni per una finestra di progettazione.Provides a base class for getting and setting option values for a 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
Ereditarietà
DesignerOptionService
Derivato
Implementazioni

Esempi

Nell'esempio di codice riportato di seguito viene DesignerOptionService illustrato l'accesso a per visualizzare i valori correnti delle opzioni standard.The following code example demonstrates accessing the DesignerOptionService to display the current values of the standard options.

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 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(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 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

Commenti

La DesignerOptionService classe fornisce una raccolta di opzioni.The DesignerOptionService class provides a collection of options. Ognuna di queste raccolte di opzioni ha un indicizzatore che consente di filtrare ulteriormente.Each of these option collections has an indexer that enables it to be further filtered. Ogni raccolta di opzioni contiene il proprio set di opzioni, nonché un rollup di tutte le relative opzioni figlio.Each option collection contains its own set of options, as well as a rollup of all of its child options. Nel caso di un conflitto di denominazione tra le proprietà, l'oggetto opzioni più esterno ha la precedenza.In the event of a naming conflict between properties, the outermost options object takes precedence. La struttura dell'interfaccia utente di Opzioni degli strumenti | seguente mostra il modo in cui l'oggetto opzioni più esterno assume maggiore importanza:The following Tools | Options user interface (UI) structure shows how the outermost options object takes on greater importance:

WindowsFormsDesigner | generaleWindowsFormsDesigner | General

  • SnapToGridSnapToGrid

  • ShowGridShowGrid

  • GridSizeGridSize

Dato un IDesignerOptionService oggetto servicedenominato, per ottenere il valore della GridSize proprietà, effettuare la chiamata seguente:Given a IDesignerOptionService named service, to get to the value of the GridSize property, you would make the following call:

// 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)

Questa operazione funziona, fino a quando non GridSize si desidera passare a un'altra pagina.This works, until you want to move GridSize to another page. Non fornisce IDesignerOptionService inoltre alcun meccanismo di individuazione.Also, IDesignerOptionService provides no discovery mechanism. Se non si conosce la stringa da passare, il servizio non è in grado di trovare il valore della proprietà.If you do not know what string to pass in, the service cannot find the property value.

La DesignerOptionService classe risolve questi problemi.The DesignerOptionService class addresses these issues. È possibile eseguire query sulle DesignerOptionService.DesignerOptionCollection raccolte ed è presente un convertitore di tipi definito nell'oggetto che contrassegna la raccolta come espandibile.You can query collections, and there is a type converter defined on the DesignerOptionService.DesignerOptionCollection object that marks the collection as expandable. Con questo convertitore di tipi, è possibile passare l'intero servizio delle opzioni della finestra di progettazione a una finestra delle proprietà e controllare visivamente il servizio.With this type converter, you can pass the entire designer option service to a property window and visually inspect the service.

Costruttori

DesignerOptionService()

Inizializza una nuova istanza della classe DesignerOptionService.Initializes a new instance of the DesignerOptionService class.

Proprietà

Options

Ottiene l'insieme di opzioni per il servizio.Gets the options collection for this service.

Metodi

CreateOptionCollection(DesignerOptionService+DesignerOptionCollection, String, Object)

Crea un nuovo oggetto DesignerOptionService.DesignerOptionCollection con il nome specificato e lo aggiunge all'elemento padre indicato.Creates a new DesignerOptionService.DesignerOptionCollection with the given name and adds it to the given parent.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
PopulateOptionCollection(DesignerOptionService+DesignerOptionCollection)

Popola DesignerOptionService.DesignerOptionCollection.Populates a DesignerOptionService.DesignerOptionCollection.

ShowDialog(DesignerOptionService+DesignerOptionCollection, Object)

Mostra la finestra di dialogo delle opzioni per l'oggetto indicato.Shows the options dialog box for the given object.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IDesignerOptionService.GetOptionValue(String, String)

Ottiene il valore di un'opzione definita nel package.Gets the value of an option defined in this package.

IDesignerOptionService.SetOptionValue(String, String, Object)

Imposta il valore di un'opzione definita nel pacchetto.Sets the value of an option defined in this package.

Si applica a

Vedi anche