下面的示例提供一个示例 UITypeEditor,它使用 IWindowsFormsEditorService 显示用于用户输入的
Imports SystemImports System.ComponentModelImports System.ComponentModel.DesignImports System.DrawingImports System.Drawing.DesignImports System.Windows.FormsImports System.Windows.Forms.Design' Example UITypeEditor that uses the IWindowsFormsEditorService' to display a Form.Public Class TestDialogEditorInherits System.Drawing.Design.UITypeEditorPublic Sub New()End SubPublic Overloads Overrides Function GetEditStyle(ByVal context As System.ComponentModel.ITypeDescriptorContext) As System.Drawing.Design.UITypeEditorEditStyle' Indicates that this editor can display a Form-based interface.Return UITypeEditorEditStyle.ModalEnd FunctionPublic 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 ThenReturn NothingEnd If' Displays a StringInputDialog Form to get a user-adjustable' string value.Dim form As New StringInputDialog(CStr(value))If edSvc.ShowDialog(form) = DialogResult.OK ThenReturn form.inputTextBox.TextEnd If' If OK was not pressed, return the original valueReturn valueEnd FunctionEnd Class' Example Form for entering a string.Friend Class StringInputDialogInherits System.Windows.Forms.FormPrivate ok_button As System.Windows.Forms.ButtonPrivate cancel_button As System.Windows.Forms.ButtonPublic inputTextBox As System.Windows.Forms.TextBoxPublic Sub New(ByVal [text] As String)InitializeComponent()inputTextBox.Text = [text]End SubPrivate 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.RightMe.ok_button.Location = New System.Drawing.Point(180, 43)Me.ok_button.Name = "ok_button"Me.ok_button.TabIndex = 1Me.ok_button.Text = "OK"Me.ok_button.DialogResult = System.Windows.Forms.DialogResult.OKMe.cancel_button.Anchor = System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.RightMe.cancel_button.Location = New System.Drawing.Point(260, 43)Me.cancel_button.Name = "cancel_button"Me.cancel_button.TabIndex = 2Me.cancel_button.Text = "Cancel"Me.cancel_button.DialogResult = System.Windows.Forms.DialogResult.CancelMe.inputTextBox.Location = New System.Drawing.Point(6, 9)Me.inputTextBox.Name = "inputTextBox"Me.inputTextBox.Size = New System.Drawing.Size(327, 20)Me.inputTextBox.TabIndex = 0Me.inputTextBox.Text = ""Me.inputTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.RightMe.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 SubEnd Class' Provides an example control that displays instructions in design mode,' with which the example UITypeEditor is associated.Public Class WinFormsEdServiceDialogExampleControlInherits UserControl _Public Property TestDialogString() As StringGetReturn localDialogTestStringEnd GetSet(ByVal Value As String)localDialogTestString = ValueEnd SetEnd PropertyPrivate localDialogTestString As StringPublic Sub New()localDialogTestString = "Test String"Me.Size = New Size(210, 74)Me.BackColor = Color.BeigeEnd SubProtected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)If Me.DesignMode Thene.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)Elsee.Graphics.DrawString("This example requires design mode.", New Font("Arial", 8), New SolidBrush(Color.Black), 5, 5)End IfEnd SubEnd Class