This documentation is archived and is not being maintained.

IWindowsFormsEditorService Interface

Provides an interface for a UITypeEditor to display Windows Forms or to display a control in a drop-down area from a property grid control in design mode.

Namespace:  System.Windows.Forms.Design
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

'Declaration
Public Interface IWindowsFormsEditorService
'Usage
Dim instance As IWindowsFormsEditorService

The IWindowsFormsEditorService is only available through the GetService method of the PropertyGrid control.

This service is typically used to display a form from the EditValue method of a UITypeEditor. When a PropertyGrid invokes the EditValue method of a UITypeEditor to provide a user interface for editing the value of a property, the EditValue method is passed a reference to an IServiceProvider that can typically provide an instance of the IWindowsFormsEditorService. The methods of this service can be used to display dialog boxes and forms, or to show a Control within a drop down container that is shown on top of the property grid near the area of the value field whose value is being edited.

The following example provides an example UITypeEditor that uses an IWindowsFormsEditorService to display a Form for user input.

Imports System
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Drawing.Design
Imports System.Windows.Forms
Imports System.Windows.Forms.Design

' Example UITypeEditor that uses the IWindowsFormsEditorService  
' to display a Form.
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> Public Class TestDialogEditor
   Inherits System.Drawing.Design.UITypeEditor

   Public Sub New()
    End Sub 

    Public Overloads Overrides Function GetEditStyle(ByVal context As ITypeDescriptorContext) As UITypeEditorEditStyle
        ' Indicates that this editor can display a Form-based interface. 
        Return UITypeEditorEditStyle.Modal
    End Function 

    Public Overloads Overrides Function EditValue(ByVal context As ITypeDescriptorContext, ByVal provider As IServiceProvider, ByVal value As Object) As Object

        ' Attempts to obtain an IWindowsFormsEditorService. 
        Dim edSvc As IWindowsFormsEditorService = CType(provider.GetService( _
        GetType(IWindowsFormsEditorService)), IWindowsFormsEditorService)
        If edSvc Is Nothing Then 
            Return Nothing 
        End If 

        ' Displays a StringInputDialog Form to get a user-adjustable  
        ' string value. 
        Using form As New StringInputDialog(CStr(value))
            If edSvc.ShowDialog(form) = DialogResult.OK Then 
                Return form.inputTextBox.Text
            End If 
        End Using 

        ' If OK was not pressed, return the original value 
        Return value

    End Function 
End Class 

' Example Form for entering a string. 
Friend Class StringInputDialog
    Inherits System.Windows.Forms.Form

    Private ok_button As System.Windows.Forms.Button
    Private cancel_button As System.Windows.Forms.Button
    Public inputTextBox As System.Windows.Forms.TextBox

    Public Sub New(ByVal [text] As String)
        InitializeComponent()
        inputTextBox.Text = [text]
    End Sub 

    Private Sub InitializeComponent()
        Me.ok_button = New System.Windows.Forms.Button()
        Me.cancel_button = New System.Windows.Forms.Button()
        Me.inputTextBox = New System.Windows.Forms.TextBox()
        Me.SuspendLayout()
        Me.ok_button.Anchor = System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right
        Me.ok_button.Location = New System.Drawing.Point(180, 43)
        Me.ok_button.Name = "ok_button" 
        Me.ok_button.TabIndex = 1
        Me.ok_button.Text = "OK" 
        Me.ok_button.DialogResult = System.Windows.Forms.DialogResult.OK
        Me.cancel_button.Anchor = System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right
        Me.cancel_button.Location = New System.Drawing.Point(260, 43)
        Me.cancel_button.Name = "cancel_button" 
        Me.cancel_button.TabIndex = 2
        Me.cancel_button.Text = "Cancel" 
        Me.cancel_button.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.inputTextBox.Location = New System.Drawing.Point(6, 9)
        Me.inputTextBox.Name = "inputTextBox" 
        Me.inputTextBox.Size = New System.Drawing.Size(327, 20)
        Me.inputTextBox.TabIndex = 0
        Me.inputTextBox.Text = "" 
        Me.inputTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right
        Me.ClientSize = New System.Drawing.Size(342, 73)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.inputTextBox, Me.cancel_button, Me.ok_button})
        Me.MinimumSize = New System.Drawing.Size(350, 100)
        Me.Name = "StringInputDialog" 
        Me.Text = "String Input Dialog" 
        Me.ResumeLayout(False)
    End Sub 

End Class 

' Provides an example control that displays instructions in design mode, 
' with which the example UITypeEditor is associated. 
Public Class WinFormsEdServiceDialogExampleControl
    Inherits UserControl

    <EditorAttribute(GetType(TestDialogEditor), GetType(UITypeEditor))> _
    Public Property TestDialogString() As String 
        Get 
            Return localDialogTestString
        End Get 
        Set(ByVal Value As String)
            localDialogTestString = Value
        End Set 
    End Property 
    Private localDialogTestString As String 

    Public Sub New()
        localDialogTestString = "Test String" 
        Me.Size = New Size(210, 74)
        Me.BackColor = Color.Beige
    End Sub 

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        If Me.DesignMode Then
            e.Graphics.DrawString("Use the Properties window to show", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 5)
            e.Graphics.DrawString("a Form dialog box, using the", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 17)
            e.Graphics.DrawString("IWindowsFormsEditorService, for", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 29)
            e.Graphics.DrawString("configuring this control's", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 41)
            e.Graphics.DrawString("TestDialogString property.", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 53)
        Else
            e.Graphics.DrawString("This example requires design mode.", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 5)
        End If 
    End Sub 

End Class

The following example provides an example UITypeEditor that uses an IWindowsFormsEditorService to display a drop-down UserControl for user input.

Imports System
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Drawing.Design
Imports System.Windows.Forms
Imports System.Windows.Forms.Design

' Example UITypeEditor that uses the IWindowsFormsEditorService to  
' display a drop-down control.
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Public Class TestDropDownEditor
   Inherits System.Drawing.Design.UITypeEditor

   Public Sub New()
    End Sub 

    Public Overloads Overrides Function GetEditStyle(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.Drawing.Design.UITypeEditorEditStyle
        ' Indicates that this editor can display a control-based  
        ' drop-down interface. 
        Return UITypeEditorEditStyle.DropDown
    End Function 

    Public Overloads Overrides Function EditValue(ByVal context As System.ComponentModel.ITypeDescriptorContext, ByVal provider As System.IServiceProvider, ByVal value As Object) As Object

        ' Attempts to obtain an IWindowsFormsEditorService. 
        Dim edSvc As IWindowsFormsEditorService = CType(provider.GetService(GetType(IWindowsFormsEditorService)), IWindowsFormsEditorService)
        If edSvc Is Nothing Then 
            Return value
        End If 

        ' Displays a drop-down control. 
        Dim inputControl As New StringInputControl(CStr(value), edSvc)
        edSvc.DropDownControl(inputControl)
        Return inputControl.inputTextBox.Text
    End Function 

End Class 

' Example control for entering a string. 
Friend Class StringInputControl
    Inherits System.Windows.Forms.UserControl

    Public inputTextBox As System.Windows.Forms.TextBox
    Private WithEvents ok_button As System.Windows.Forms.Button
    Private WithEvents cancel_button As System.Windows.Forms.Button
    Private edSvc As IWindowsFormsEditorService

    Public Sub New(ByVal [text] As String, ByVal edSvc As IWindowsFormsEditorService)
        InitializeComponent()
        inputTextBox.Text = [text]
        ' Stores IWindowsFormsEditorService reference to use to  
        ' close the control. 
        Me.edSvc = edSvc
    End Sub 

    Private Sub InitializeComponent()
        Me.inputTextBox = New System.Windows.Forms.TextBox()
        Me.ok_button = New System.Windows.Forms.Button()
        Me.cancel_button = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        Me.inputTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right
        Me.inputTextBox.Location = New System.Drawing.Point(6, 7)
        Me.inputTextBox.Name = "inputTextBox" 
        Me.inputTextBox.Size = New System.Drawing.Size(336, 20)
        Me.inputTextBox.TabIndex = 0
        Me.inputTextBox.Text = "" 
        Me.ok_button.Anchor = System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right
        Me.ok_button.DialogResult = System.Windows.Forms.DialogResult.OK
        Me.ok_button.Location = New System.Drawing.Point(186, 38)
        Me.ok_button.Name = "ok_button" 
        Me.ok_button.TabIndex = 1
        Me.ok_button.Text = "OK" 
        Me.cancel_button.Anchor = System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right
        Me.cancel_button.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.cancel_button.Location = New System.Drawing.Point(267, 38)
        Me.cancel_button.Name = "cancel_button" 
        Me.cancel_button.TabIndex = 2
        Me.cancel_button.Text = "Cancel" 
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.cancel_button, Me.ok_button, Me.inputTextBox})
        Me.Name = "StringInputControl" 
        Me.Size = New System.Drawing.Size(350, 70)
        Me.ResumeLayout(False)
    End Sub 

    Private Sub CloseControl(ByVal sender As Object, ByVal e As EventArgs) Handles ok_button.Click, cancel_button.Click
        edSvc.CloseDropDown()
    End Sub 

End Class 

' Provides an example control that displays instructions in design mode, 
' with which the example UITypeEditor is associated. 
Public Class WinFormsEdServiceDropDownExampleControl
    Inherits UserControl

    <EditorAttribute(GetType(TestDropDownEditor), GetType(UITypeEditor))> _
    Public Property TestDropDownString() As String 
        Get 
            Return localDropDownTestString
        End Get 
        Set(ByVal Value As String)
            localDropDownTestString = Value
        End Set 
    End Property 
    Private localDropDownTestString As String 

    Public Sub New()
        localDropDownTestString = "Test String" 
        Me.Size = New Size(210, 74)
        Me.BackColor = Color.Beige
    End Sub 

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        If Me.DesignMode Then
            e.Graphics.DrawString("Use the Properties window to show", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 5)
            e.Graphics.DrawString("a drop-down control, using the", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 17)
            e.Graphics.DrawString("IWindowsFormsEditorService, for", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 29)
            e.Graphics.DrawString("configuring this control's", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 41)
            e.Graphics.DrawString("TestDropDownString property.", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 53)
        Else
            e.Graphics.DrawString("This example requires design mode.", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 5)
        End If 
    End Sub 

End Class

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.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0
Show: