ComponentEditor クラス

定義

カスタム コンポーネント エディターの基本クラスを提供します。

public ref class ComponentEditor abstract
public abstract class ComponentEditor
type ComponentEditor = class
Public MustInherit Class ComponentEditor
継承
ComponentEditor
派生

次のコード例は、 ComponentEditor 実装の例を示しています。

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;

// This example demonstrates how to implement a component editor that hosts
// component pages and associate it with a component. This example also
// demonstrates how to implement a component page that provides a panel-based
// control system and Help keyword support.

// The ExampleComponentEditor displays two ExampleComponentEditorPage pages.
public class ExampleComponentEditor : WindowsFormsComponentEditor
{
    // This method override returns an type array containing the type of
    // each component editor page to display.
    protected override Type[] GetComponentEditorPages() => [typeof(ExampleComponentEditorPage), typeof(ExampleComponentEditorPage)];

    // This method override returns the index of the page to display when the
    // component editor is first displayed.
    protected override int GetInitialComponentEditorPageIndex() => 1;
}

// This example component editor page type provides an example
// ComponentEditorPage implementation.
class ExampleComponentEditorPage : ComponentEditorPage
{
    readonly Label _l1;
    readonly Button b1;
    readonly PropertyGrid pg1;

    public ExampleComponentEditorPage()
    {
        // Initialize the page, which inherits from Panel, and its controls.
        Size = new Size(400, 250);
        Icon = new Icon("myicon.ico");
        Text = "Example Page";

        b1 = new Button
        {
            Size = new Size(200, 20),
            Location = new Point(200, 0),
            Text = "Set a random background color"
        };
        b1.Click += randomBackColor;
        Controls.Add(b1);

        _l1 = new Label
        {
            Size = new Size(190, 20),
            Location = new Point(4, 2),
            Text = "Example Component Editor Page"
        };
        Controls.Add(_l1);

        pg1 = new PropertyGrid
        {
            Size = new Size(400, 280),
            Location = new Point(0, 30)
        };
        Controls.Add(pg1);
    }

    // This method indicates that the Help button should be enabled for this
    // component editor page.
    public override bool SupportsHelp() => true;

    // This method is called when the Help button for this component editor page is pressed.
    // This implementation uses the IHelpService to show the Help topic for a sample keyword.
    public override void ShowHelp()
    {
        // The GetSelectedComponent method of a ComponentEditorPage retrieves the
        // IComponent associated with the WindowsFormsComponentEditor.
        IComponent selectedComponent = GetSelectedComponent();

        // Retrieve the Site of the component, and return if null.
        ISite componentSite = selectedComponent.Site;
        if (componentSite == null)
        {
            return;
        }

        // Acquire the IHelpService to display a help topic using a indexed keyword lookup.
        IHelpService helpService = (IHelpService)componentSite.GetService(typeof(IHelpService));
        helpService?.ShowHelpFromKeyword("System.Windows.Forms.ComboBox");
    }

    // The LoadComponent method is raised when the ComponentEditorPage is displayed.
    protected override void LoadComponent() => pg1.SelectedObject = Component;

    // The SaveComponent method is raised when the WindowsFormsComponentEditor is closing
    // or the current ComponentEditorPage is closing.
    protected override void SaveComponent()
    {
    }

    // If the associated component is a Control, this method sets the BackColor to a random color.
    // This method is invoked by the button on this ComponentEditorPage.
    void randomBackColor(object sender, EventArgs e)
    {
        if (typeof(Control).IsAssignableFrom(Component.GetType()))
        {
            // Sets the background color of the Control associated with the
            // WindowsFormsComponentEditor to a random color.
            Random rnd = new();
            ((Control)Component).BackColor =
                Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255));
            pg1.Refresh();
        }
    }
}

// This example control is associated with the ExampleComponentEditor
// through the following EditorAttribute.
[Editor(typeof(ExampleComponentEditor), typeof(ComponentEditor))]
public class ExampleUserControl : UserControl;

注釈

コンポーネント エディターは、コンポーネント全体を編集するために使用され、プロパティ ページと同様のユーザー インターフェイスを実装するために使用できます。 コンポーネント エディターをコンポーネントに関連付けるには、 EditorAttribute 属性を使用します。

注意 (実装者)

このクラスから継承する場合は、 EditComponent(Object) メソッドをオーバーライドする必要があります。

コンストラクター

名前 説明
ComponentEditor()

ComponentEditor クラスの新しいインスタンスを初期化します。

メソッド

名前 説明
EditComponent(ITypeDescriptorContext, Object)

コンポーネントを編集し、特定のコンテキストに基づいてコンポーネントが変更されたかどうかを示す値を返します。

EditComponent(Object)

コンポーネントを編集し、コンポーネントが変更されたかどうかを示す値を返します。

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象