IWindowsFormsEditorService インターフェイス
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)


IWindowsFormsEditorService は、PropertyGrid コントロールの GetService メソッドを通じてだけ使用できます。
このサービスは、通常、UITypeEditor の EditValue メソッドからフォームを表示するために使用されます。PropertyGrid が UITypeEditor の EditValue メソッドを呼び出して、プロパティの値を編集するためのユーザー インターフェイスを提供する場合、EditValue メソッドには、通常 IWindowsFormsEditorService のインスタンスを提供する IServiceProvider への参照が渡されます。このサービスのメソッドを使用することによって、ダイアログ ボックスやフォームを表示したり、ドロップダウン コンテナ内の Control を表示できます。このコンテナは、編集中の値を持つ値フィールド領域に近いプロパティ グリッドの上に表示されます。

IWindowsFormsEditorService を使用してユーザー入力用の Form を表示する UITypeEditor の例を次に示します。
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 System.ComponentModel.ITypeDescriptorContext) As System.Drawing.Design.UITypeEditorEditStyle ' Indicates that this editor can display a Form-based interface. Return UITypeEditorEditStyle.Modal 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 Nothing End 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 Then Return form.inputTextBox.Text End If ' 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
using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing; using System.Drawing.Design; using System.Windows.Forms; using System.Windows.Forms.Design; namespace IWindowsFormsEditorServiceExample { // Example UITypeEditor that uses the IWindowsFormsEditorService // to display a Form. [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")] public class TestDialogEditor : System.Drawing.Design.UITypeEditor { public TestDialogEditor() { } public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context) { // Indicates that this editor can display a Form-based interface. return UITypeEditorEditStyle.Modal; } public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object value) { // Attempts to obtain an IWindowsFormsEditorService. IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if( edSvc == null ) return null; // Displays a StringInputDialog Form to get a user-adjustable // string value. StringInputDialog form = new StringInputDialog((string)value); if( edSvc.ShowDialog(form) == DialogResult.OK ) return form.inputTextBox.Text; // If OK was not pressed, return the original value return value; } } // Example Form for entering a string. internal class StringInputDialog : System.Windows.Forms.Form { private System.Windows.Forms.Button ok_button; private System.Windows.Forms.Button cancel_button; public System.Windows.Forms.TextBox inputTextBox; public StringInputDialog(string text) { InitializeComponent(); inputTextBox.Text = text; } private void InitializeComponent() { this.ok_button = new System.Windows.Forms.Button(); this.cancel_button = new System.Windows.Forms.Button(); this.inputTextBox = new System.Windows.Forms.TextBox(); this.SuspendLayout(); this.ok_button.Anchor = (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right); this.ok_button.Location = new System.Drawing.Point(180, 43); this.ok_button.Name = "ok_button"; this.ok_button.TabIndex = 1; this.ok_button.Text = "OK"; this.ok_button.DialogResult = System.Windows.Forms.DialogResult.OK; this.cancel_button.Anchor = (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right); this.cancel_button.Location = new System.Drawing.Point(260, 43); this.cancel_button.Name = "cancel_button"; this.cancel_button.TabIndex = 2; this.cancel_button.Text = "Cancel"; this.cancel_button.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.inputTextBox.Location = new System.Drawing.Point(6, 9); this.inputTextBox.Name = "inputTextBox"; this.inputTextBox.Size = new System.Drawing.Size(327, 20); this.inputTextBox.TabIndex = 0; this.inputTextBox.Text = ""; this.inputTextBox.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right); this.ClientSize = new System.Drawing.Size(342, 73); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.inputTextBox , this.cancel_button , this.ok_button}); this.MinimumSize = new System.Drawing.Size(350, 100); this.Name = "StringInputDialog"; this.Text = "String Input Dialog"; this.ResumeLayout(false); } } // Provides an example control that displays instructions in design mode, // with which the example UITypeEditor is associated. public class WinFormsEdServiceDialogExampleControl : UserControl { [EditorAttribute(typeof(TestDialogEditor), typeof(UITypeEditor))] public string TestDialogString { get { return localDialogTestString; } set { localDialogTestString = value; } } private string localDialogTestString; public WinFormsEdServiceDialogExampleControl() { localDialogTestString = "Test String"; this.Size = new Size(210, 74); this.BackColor = Color.Beige; } protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { if( this.DesignMode ) { 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); } } } }
#using <System.Windows.Forms.dll> #using <System.Drawing.dll> #using <System.dll> using namespace System; using namespace System::ComponentModel; using namespace System::ComponentModel::Design; using namespace System::Drawing; using namespace System::Drawing::Design; using namespace System::Windows::Forms; using namespace System::Windows::Forms::Design; using namespace System::Security::Permissions; namespace IWindowsFormsEditorServiceExample { // Example Form for entering a string. private ref class StringInputDialog: public System::Windows::Forms::Form { private: System::Windows::Forms::Button^ ok_button; System::Windows::Forms::Button^ cancel_button; public: System::Windows::Forms::TextBox^ inputTextBox; StringInputDialog( String^ text ) { InitializeComponent(); inputTextBox->Text = text; } private: void InitializeComponent() { this->ok_button = gcnew System::Windows::Forms::Button; this->cancel_button = gcnew System::Windows::Forms::Button; this->inputTextBox = gcnew System::Windows::Forms::TextBox; this->SuspendLayout(); this->ok_button->Anchor = static_cast<AnchorStyles>(System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right); this->ok_button->Location = System::Drawing::Point( 180, 43 ); this->ok_button->Name = "ok_button"; this->ok_button->TabIndex = 1; this->ok_button->Text = "OK"; this->ok_button->DialogResult = System::Windows::Forms::DialogResult::OK; this->cancel_button->Anchor = static_cast<AnchorStyles>(System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right); this->cancel_button->Location = System::Drawing::Point( 260, 43 ); this->cancel_button->Name = "cancel_button"; this->cancel_button->TabIndex = 2; this->cancel_button->Text = "Cancel"; this->cancel_button->DialogResult = System::Windows::Forms::DialogResult::Cancel; this->inputTextBox->Location = System::Drawing::Point( 6, 9 ); this->inputTextBox->Name = "inputTextBox"; this->inputTextBox->Size = System::Drawing::Size( 327, 20 ); this->inputTextBox->TabIndex = 0; this->inputTextBox->Text = ""; this->inputTextBox->Anchor = static_cast<AnchorStyles>(System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left | System::Windows::Forms::AnchorStyles::Right); this->ClientSize = System::Drawing::Size( 342, 73 ); array<System::Windows::Forms::Control^>^temp0 = {this->inputTextBox ,this->cancel_button,this->ok_button}; this->Controls->AddRange( temp0 ); this->MinimumSize = System::Drawing::Size( 350, 100 ); this->Name = "StringInputDialog"; this->Text = "String Input Dialog"; this->ResumeLayout( false ); } }; // Example UITypeEditor that uses the IWindowsFormsEditorService // to display a Form. [PermissionSet(SecurityAction::Demand, Name = "FullTrust")] public ref class TestDialogEditor: public System::Drawing::Design::UITypeEditor { public: TestDialogEditor(){} virtual System::Drawing::Design::UITypeEditorEditStyle GetEditStyle( System::ComponentModel::ITypeDescriptorContext^ context ) override { // Indicates that this editor can display a Form-based interface. return UITypeEditorEditStyle::Modal; } virtual Object^ EditValue( System::ComponentModel::ITypeDescriptorContext^ context, System::IServiceProvider^ provider, Object^ value ) override { // Attempts to obtain an IWindowsFormsEditorService. IWindowsFormsEditorService^ edSvc = dynamic_cast<IWindowsFormsEditorService^>(provider->GetService( IWindowsFormsEditorService::typeid )); if ( edSvc == nullptr ) return nullptr; // Displays a StringInputDialog Form to get a user-adjustable // string value. StringInputDialog^ form = gcnew StringInputDialog( dynamic_cast<String^>(value) ); if ( edSvc->ShowDialog( form ) == DialogResult::OK ) return form->inputTextBox->Text; // If OK was not pressed, return the original value return value; } }; // Provides an example control that displays instructions in design mode, // with which the example UITypeEditor is associated. public ref class WinFormsEdServiceDialogExampleControl: public UserControl { public: property String^ TestDialogString { [EditorAttribute(IWindowsFormsEditorServiceExample::TestDialogEditor::typeid ,UITypeEditor::typeid)] String^ get() { return localDialogTestString; } void set( String^ value ) { localDialogTestString = value; } } private: String^ localDialogTestString; public: WinFormsEdServiceDialogExampleControl() { localDialogTestString = "Test String"; this->Size = System::Drawing::Size( 210, 74 ); this->BackColor = Color::Beige; } protected: virtual void OnPaint( System::Windows::Forms::PaintEventArgs^ e ) override { if ( this->DesignMode ) { e->Graphics->DrawString( "Use the Properties window to show", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 5 ); e->Graphics->DrawString( "a Form dialog box, using the", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 17 ); e->Graphics->DrawString( "IWindowsFormsEditorService, for", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 29 ); e->Graphics->DrawString( "configuring this control's", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 41 ); e->Graphics->DrawString( "TestDialogString property.", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 53 ); } else { e->Graphics->DrawString( "This example requires design mode.", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 5 ); } } }; }
package IWindowsFormsEditorServiceExample; import System.*; import System.ComponentModel.*; import System.ComponentModel.Design.*; import System.Drawing.*; import System.Drawing.Design.*; import System.Windows.Forms.*; import System.Windows.Forms.Design.*; // Example UITypeEditor that uses the IWindowsFormsEditorService // to display a Form. /** @attribute System.Security.Permissions.PermissionSet(System.Security. Permissions.SecurityAction.Demand, Name = "FullTrust") */ public class TestDialogEditor extends System.Drawing.Design.UITypeEditor { public TestDialogEditor() { } //TestDialogEditor public System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(System. ComponentModel.ITypeDescriptorContext context) { // Indicates that this editor can display a Form-based interface. return UITypeEditorEditStyle.Modal; } //GetEditStyle public Object EditValue(System.ComponentModel. ITypeDescriptorContext context, System.IServiceProvider provider, Object value) { // Attempts to obtain an IWindowsFormsEditorService. IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider. GetService(IWindowsFormsEditorService.class.ToType()); if (edSvc.Equals(null)) { return null; } // Displays a StringInputDialog Form to get a user-adjustable // string value. StringInputDialog form = new StringInputDialog((String)value); if ((edSvc.ShowDialog(form)).Equals(DialogResult.OK)) { return form.inputTextBox.get_Text(); } // If OK was not pressed, return the original value return value; } //EditValue } //TestDialogEditor // Example Form for entering a string. class StringInputDialog extends System.Windows.Forms.Form { private System.Windows.Forms.Button okButton; private System.Windows.Forms.Button cancelButton; public System.Windows.Forms.TextBox inputTextBox; public StringInputDialog(String text) { InitializeComponent(); inputTextBox.set_Text(text); } //StringInputDialog private void InitializeComponent() { this.okButton = new System.Windows.Forms.Button(); this.cancelButton = new System.Windows.Forms.Button(); this.inputTextBox = new System.Windows.Forms.TextBox(); this.SuspendLayout(); this.okButton.set_Anchor(System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right); this.okButton.set_Location(new System.Drawing.Point(180, 43)); this.okButton.set_Name("ok_Button"); this.okButton.set_TabIndex(1); this.okButton.set_Text("OK"); this.okButton.set_DialogResult(System.Windows.Forms.DialogResult.OK); this.cancelButton.set_Anchor(System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right); this.cancelButton.set_Location(new System.Drawing.Point(260, 43)); this.cancelButton.set_Name("cancel_Button"); this.cancelButton.set_TabIndex(2); this.cancelButton.set_Text("Cancel"); this.cancelButton.set_DialogResult(System.Windows.Forms.DialogResult. Cancel); this.inputTextBox.set_Location(new System.Drawing.Point(6, 9)); this.inputTextBox.set_Name("inputTextBox"); this.inputTextBox.set_Size(new System.Drawing.Size(327, 20)); this.inputTextBox.set_TabIndex(0); this.inputTextBox.set_Text(""); this.inputTextBox.set_Anchor(System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms. AnchorStyles.Right); this.set_ClientSize(new System.Drawing.Size(342, 73)); this.get_Controls().AddRange(new System.Windows.Forms.Control[] { this. inputTextBox, this.cancelButton, this.okButton }); this.set_MinimumSize(new System.Drawing.Size(350, 100)); this.set_Name("StringInputDialog"); this.set_Text("String Input Dialog"); this.ResumeLayout(false); } //InitializeComponent } //StringInputDialog // Provides an example control that displays instructions in design mode, // with which the example UITypeEditor is associated. public class WinFormsEdServiceDialogExampleControl extends UserControl { /** @attribute EditorAttribute(TestDialogEditor.class, UITypeEditor.class) */ /** @property */ public String get_TestDialogString() { return localDialogTestString; } //get_TestDialogString /** @property */ public void set_TestDialogString(String value) { localDialogTestString = value; } //set_TestDialogString private String localDialogTestString; public WinFormsEdServiceDialogExampleControl() { localDialogTestString = "Test String"; this.set_Size(new Size(210, 74)); this.set_BackColor(Color.get_Beige()); } //WinFormsEdServiceDialogExampleControl protected void OnPaint(System.Windows.Forms.PaintEventArgs e) { if (this.get_DesignMode()) { e.get_Graphics().DrawString("Use the Properties window to show", new Font("Arial", 8), new SolidBrush(Color.get_Black()), 5, 5); e.get_Graphics().DrawString("a Form dialog box, using the", new Font("Arial", 8), new SolidBrush(Color.get_Black()), 5, 17); e.get_Graphics().DrawString("IWindowsFormsEditorService, for" , new Font("Arial", 8), new SolidBrush(Color.get_Black()), 5, 29); e.get_Graphics().DrawString("configuring this control's", new Font("Arial", 8), new SolidBrush(Color.get_Black()), 5, 41); e.get_Graphics().DrawString("TestDialogString property.", new Font("Arial", 8), new SolidBrush(Color.get_Black()), 5, 53); } else { e.get_Graphics().DrawString("This example requires design mode.", new Font("Arial", 8), new SolidBrush(Color.get_Black()), 5, 5); } } //OnPaint } //WinFormsEdServiceDialogExampleControl
IWindowsFormsEditorService を使用してユーザー入力用のドロップダウン UserControl を表示する UITypeEditor の例を次に示します。
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
using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing; using System.Drawing.Design; using System.Windows.Forms; using System.Windows.Forms.Design; namespace IWindowsFormsEditorServiceExample { // Example UITypeEditor that uses the IWindowsFormsEditorService to // display a drop-down control. [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] public class TestDropDownEditor : System.Drawing.Design.UITypeEditor { public TestDropDownEditor() { } public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context) { // Indicates that this editor can display a control-based // drop-down interface. return UITypeEditorEditStyle.DropDown; } public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object value) { // Attempts to obtain an IWindowsFormsEditorService. IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if( edSvc == null ) return value; // Displays a drop-down control. StringInputControl inputControl = new StringInputControl((string)value, edSvc); edSvc.DropDownControl(inputControl); return inputControl.inputTextBox.Text; } } // Example control for entering a string. internal class StringInputControl : System.Windows.Forms.UserControl { public System.Windows.Forms.TextBox inputTextBox; private System.Windows.Forms.Button ok_button; private System.Windows.Forms.Button cancel_button; private IWindowsFormsEditorService edSvc; public StringInputControl(string text, IWindowsFormsEditorService edSvc) { InitializeComponent(); inputTextBox.Text = text; // Stores IWindowsFormsEditorService reference to use to // close the control. this.edSvc = edSvc; } private void InitializeComponent() { this.inputTextBox = new System.Windows.Forms.TextBox(); this.ok_button = new System.Windows.Forms.Button(); this.cancel_button = new System.Windows.Forms.Button(); this.SuspendLayout(); this.inputTextBox.Anchor = ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right); this.inputTextBox.Location = new System.Drawing.Point(6, 7); this.inputTextBox.Name = "inputTextBox"; this.inputTextBox.Size = new System.Drawing.Size(336, 20); this.inputTextBox.TabIndex = 0; this.inputTextBox.Text = ""; this.ok_button.Anchor = (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right); this.ok_button.DialogResult = System.Windows.Forms.DialogResult.OK; this.ok_button.Location = new System.Drawing.Point(186, 38); this.ok_button.Name = "ok_button"; this.ok_button.TabIndex = 1; this.ok_button.Text = "OK"; this.ok_button.Click += new EventHandler(this.CloseControl); this.cancel_button.Anchor = (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right); this.cancel_button.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancel_button.Location = new System.Drawing.Point(267, 38); this.cancel_button.Name = "cancel_button"; this.cancel_button.TabIndex = 2; this.cancel_button.Text = "Cancel"; this.cancel_button.Click += new EventHandler(this.CloseControl); this.Controls.AddRange(new System.Windows.Forms.Control[] { this.cancel_button , this.ok_button , this.inputTextBox}); this.Name = "StringInputControl"; this.Size = new System.Drawing.Size(350, 70); this.ResumeLayout(false); } private void CloseControl(object sender, EventArgs e) { edSvc.CloseDropDown(); } } // Provides an example control that displays instructions in design mode, // with which the example UITypeEditor is associated. public class WinFormsEdServiceDropDownExampleControl : UserControl { [EditorAttribute(typeof(TestDropDownEditor), typeof(UITypeEditor))] public string TestDropDownString { get { return localDropDownTestString; } set { localDropDownTestString = value; } } private string localDropDownTestString; public WinFormsEdServiceDropDownExampleControl() { localDropDownTestString = "Test String"; this.Size = new Size(210, 74); this.BackColor = Color.Beige; } protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { if( this.DesignMode ) { 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); } } } }
#using <System.Windows.Forms.dll> #using <System.Drawing.dll> #using <System.dll> using namespace System; using namespace System::ComponentModel; using namespace System::ComponentModel::Design; using namespace System::Drawing; using namespace System::Drawing::Design; using namespace System::Windows::Forms; using namespace System::Windows::Forms::Design; using namespace System::Security::Permissions; namespace IWindowsFormsEditorServiceExample { // Example control for entering a string. private ref class StringInputControl: public UserControl { public: System::Windows::Forms::TextBox^ inputTextBox; private: System::Windows::Forms::Button^ ok_button; System::Windows::Forms::Button^ cancel_button; IWindowsFormsEditorService^ edSvc; public: StringInputControl( String^ text, IWindowsFormsEditorService^ edSvc ) { InitializeComponent(); inputTextBox->Text = text; // Stores IWindowsFormsEditorService reference to use to // close the control. this->edSvc = edSvc; } private: void InitializeComponent() { this->inputTextBox = gcnew System::Windows::Forms::TextBox; this->ok_button = gcnew System::Windows::Forms::Button; this->cancel_button = gcnew System::Windows::Forms::Button; this->SuspendLayout(); this->inputTextBox->Anchor = static_cast<AnchorStyles>(System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left | System::Windows::Forms::AnchorStyles::Right); this->inputTextBox->Location = System::Drawing::Point( 6, 7 ); this->inputTextBox->Name = "inputTextBox"; this->inputTextBox->Size = System::Drawing::Size( 336, 20 ); this->inputTextBox->TabIndex = 0; this->inputTextBox->Text = ""; this->ok_button->Anchor = static_cast<AnchorStyles>(System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right); this->ok_button->DialogResult = System::Windows::Forms::DialogResult::OK; this->ok_button->Location = System::Drawing::Point( 186, 38 ); this->ok_button->Name = "ok_button"; this->ok_button->TabIndex = 1; this->ok_button->Text = "OK"; this->ok_button->Click += gcnew EventHandler( this, &StringInputControl::CloseControl ); this->cancel_button->Anchor = static_cast<AnchorStyles>(System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right); this->cancel_button->DialogResult = System::Windows::Forms::DialogResult::Cancel; this->cancel_button->Location = System::Drawing::Point( 267, 38 ); this->cancel_button->Name = "cancel_button"; this->cancel_button->TabIndex = 2; this->cancel_button->Text = "Cancel"; this->cancel_button->Click += gcnew EventHandler( this, &StringInputControl::CloseControl ); array<System::Windows::Forms::Control^>^temp0 = {this->cancel_button ,this->ok_button,this->inputTextBox}; this->Controls->AddRange( temp0 ); this->Name = "StringInputControl"; this->Size = System::Drawing::Size( 350, 70 ); this->ResumeLayout( false ); } void CloseControl( Object^ /*sender*/, EventArgs^ /*e*/ ) { edSvc->CloseDropDown(); } }; // Example UITypeEditor that uses the IWindowsFormsEditorService to // display a drop-down control. [PermissionSet(SecurityAction::Demand, Name = "FullTrust")] public ref class TestDropDownEditor: public System::Drawing::Design::UITypeEditor { public: TestDropDownEditor(){} virtual System::Drawing::Design::UITypeEditorEditStyle GetEditStyle( System::ComponentModel::ITypeDescriptorContext^ /*context*/ ) override { // Indicates that this editor can display a control-based // drop-down interface. return UITypeEditorEditStyle::DropDown; } virtual Object^ EditValue( System::ComponentModel::ITypeDescriptorContext^ /*context*/, System::IServiceProvider^ provider, Object^ value ) override { // Attempts to obtain an IWindowsFormsEditorService. IWindowsFormsEditorService^ edSvc = dynamic_cast<IWindowsFormsEditorService^>(provider->GetService( IWindowsFormsEditorService::typeid )); if ( edSvc == nullptr ) return value; // Displays a drop-down control. StringInputControl^ inputControl = gcnew StringInputControl( dynamic_cast<String^>(value),edSvc ); edSvc->DropDownControl( inputControl ); return inputControl->inputTextBox->Text; } }; // Provides an example control that displays instructions in design mode, // with which the example UITypeEditor is associated. public ref class WinFormsEdServiceDropDownExampleControl: public UserControl { public: property String^ TestDropDownString { [EditorAttribute(IWindowsFormsEditorServiceExample::TestDropDownEditor::typeid ,UITypeEditor::typeid)] String^ get() { return localDropDownTestString; } void set( String^ value ) { localDropDownTestString = value; } } private: String^ localDropDownTestString; public: WinFormsEdServiceDropDownExampleControl() { localDropDownTestString = "Test String"; this->Size = System::Drawing::Size( 210, 74 ); this->BackColor = Color::Beige; } protected: virtual void OnPaint( System::Windows::Forms::PaintEventArgs^ e ) override { if ( this->DesignMode ) { e->Graphics->DrawString( "Use the Properties window to show", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 5 ); e->Graphics->DrawString( "a drop-down control, using the", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 17 ); e->Graphics->DrawString( "IWindowsFormsEditorService, for", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 29 ); e->Graphics->DrawString( "configuring this control's", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 41 ); e->Graphics->DrawString( "TestDropDownString property.", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 53 ); } else { e->Graphics->DrawString( "This example requires design mode.", gcnew System::Drawing::Font( "Arial",8 ), gcnew SolidBrush( Color::Black ), 5, 5 ); } } }; }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IWindowsFormsEditorService メソッド

名前 | 説明 | |
---|---|---|
![]() | CloseDropDown | 以前に開かれていたドロップダウン コントロール領域があれば、すべて閉じます。 |
![]() | DropDownControl | 指定したコントロールを、ドロップダウン領域内のこのサービスを提供するプロパティ グリッドの値フィールドの下に表示します。 |
![]() | ShowDialog | 指定した Form を表示します。 |

IWindowsFormsEditorService メンバ
UITypeEditor にインターフェイスを提供して、Windows フォームを表示したり、デザイン モードでプロパティ グリッド コントロールからドロップダウン領域のコントロールを表示したりします。
IWindowsFormsEditorService データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | CloseDropDown | 以前に開かれていたドロップダウン コントロール領域があれば、すべて閉じます。 |
![]() | DropDownControl | 指定したコントロールを、ドロップダウン領域内のこのサービスを提供するプロパティ グリッドの値フィールドの下に表示します。 |
![]() | ShowDialog | 指定した Form を表示します。 |

- IWindowsFormsEditorServiceのページへのリンク