DesignerOptionService Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет базовый класс для получения и задания значений параметров для конструктора.
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
- Наследование
-
DesignerOptionService
- Производный
- Реализации
Примеры
В следующем примере кода показан доступ к DesignerOptionService текущему значению стандартных параметров.
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
Комментарии
Класс DesignerOptionService предоставляет коллекцию параметров. У каждой из этих коллекций параметров есть индексатор, позволяющий отфильтровать его. Каждая коллекция параметров содержит собственный набор параметров, а также свертки всех дочерних параметров. В случае конфликта именования между свойствами самый внешний объект параметров имеет приоритет. Следующие инструменты | Структура пользовательского интерфейса (UI) показывает, как самый внешний объект параметров имеет большую важность:
WindowsFormsDesigner | Общие
SnapToGrid
ShowGrid
GridSize
IDesignerOptionService Если задано имяservice, чтобы получить значение GridSize свойства, выполните следующий вызов:
// 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)
Это работает, пока вы не хотите перейти GridSize на другую страницу. Кроме того, IDesignerOptionService не предоставляется механизм обнаружения. Если вы не знаете, какую строку необходимо передать, служба не может найти значение свойства.
Класс DesignerOptionService решает эти проблемы. Вы можете запрашивать коллекции и есть преобразователь типов, определенный в объекте DesignerOptionService.DesignerOptionCollection , который помечает коллекцию как расширяемую. С помощью этого конвертера типов можно передать всю службу параметров конструктора в окно свойств и визуально проверить службу.
Конструкторы
| Имя | Описание |
|---|---|
| DesignerOptionService() |
Инициализирует новый экземпляр класса DesignerOptionService. |
Свойства
| Имя | Описание |
|---|---|
| Options |
Возвращает коллекцию параметров для этой службы. |
Методы
| Имя | Описание |
|---|---|
| CreateOptionCollection(DesignerOptionService+DesignerOptionCollection, String, Object) |
Создает новое DesignerOptionService.DesignerOptionCollection имя с заданным именем и добавляет его в заданный родительский элемент. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| PopulateOptionCollection(DesignerOptionService+DesignerOptionCollection) | |
| ShowDialog(DesignerOptionService+DesignerOptionCollection, Object) |
Отображает диалоговое окно параметров для данного объекта. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| IDesignerOptionService.GetOptionValue(String, String) |
Возвращает значение параметра, определенного в этом пакете. |
| IDesignerOptionService.SetOptionValue(String, String, Object) |
Задает значение параметра, определенного в этом пакете. |