IComponentChangeServiceとは? わかりやすく解説

IComponentChangeService イベント


パブリック イベントパブリック イベント

  名前 説明
パブリック イベント ComponentAdded コンポーネント追加されたときに発生します
パブリック イベント ComponentAdding コンポーネント追加されているときに発生します
パブリック イベント ComponentChanged コンポーネント変更されたときに発生します
パブリック イベント ComponentChanging コンポーネント変更されているときに発生します
パブリック イベント ComponentRemoved コンポーネント削除されたときに発生します
パブリック イベント ComponentRemoving コンポーネント削除されているときに発生します
パブリック イベント ComponentRename コンポーネントの名前が変更されたときに発生します
参照参照

関連項目

IComponentChangeService インターフェイス
System.ComponentModel.Design 名前空間
ComponentEventHandler デリゲート
ComponentChangedEventHandler デリゲート
ComponentChangingEventHandler デリゲート
ComponentRenameEventHandler デリゲート
MemberDescriptor クラス
DesignerTransaction クラス

IComponentChangeService インターフェイス

コンポーネント追加変更削除、または名前変更イベントイベント ハンドラ追加および削除するためのインターフェイス提供すると共に、ComponentChanged イベントまたは ComponentChanging イベント発生させるメソッド提供します

名前空間: System.ComponentModel.Design
アセンブリ: System (system.dll 内)
構文構文

<ComVisibleAttribute(True)> _
Public Interface IComponentChangeService
Dim instance As IComponentChangeService
[ComVisibleAttribute(true)] 
public interface IComponentChangeService
[ComVisibleAttribute(true)] 
public interface class IComponentChangeService
/** @attribute ComVisibleAttribute(true) */ 
public interface IComponentChangeService
ComVisibleAttribute(true) 
public interface IComponentChangeService
解説解説

IComponentChangeService は、次のイベント処理するメソッドを示すために使用できるインターフェイス提供します

通常デザイン環境では、コンポーネント対す上記のような追加変更削除、名前変更の各イベント発生しますデザイナは、コンポーネント影響与えデザイン時のアクション元に戻したやり直したりする機能を DesignerTransaction オブジェクト使用して提供する場合に、このインターフェイスメソッド呼び出します。詳細については、DesignerTransaction に関するドキュメント参照してください通常は、これらの変更通知処理するのはルート デザイナだけです。

このサービスは、コンポーネント変更されたときに発生するイベントや、これから変更されるときに発生するイベント発生させるメソッド提供します。PropertyDescriptor やコンポーネントは、コンポーネント変更されたこと、これから変更されることを示すために、それぞれ OnComponentChanged メソッドと OnComponentChanging メソッド使用できます

使用例使用例

IComponentChangeService インターフェイス使用してデザイン モードコンポーネント追加削除変更に関する通知受け取方法次の例に示します

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

'  This sample illustrates how to use the IComponentChangeService interface
 
'    to handle component change events.  The ComponentClass control
 attaches 
'    event handlers when it is sited in a document, and displays a message
 
'    when notification that a component has been added, removed, or
 changed
'    is received from the IComponentChangeService.

'    To run this sample, add the ComponentClass control to a Form and
'    add, remove, or change components to see the behavior of the
'    component change event handlers. 

Namespace IComponentChangeServiceExample
    _
   Public Class ComponentClass
      Inherits System.Windows.Forms.UserControl
      Private components As System.ComponentModel.Container
 = Nothing
      Private listBox1 As System.Windows.Forms.ListBox
      Private m_changeService As IComponentChangeService
    
      
      Public Sub New()
         InitializeComponent()
        End Sub

        Private Sub InitializeComponent()
            Me.listBox1 = New System.Windows.Forms.ListBox()
            Me.SuspendLayout()

            ' listBox1.
            Me.listBox1.Location = New System.Drawing.Point(24,
 16)
            Me.listBox1.Name = "listBox1"
            Me.listBox1.Size = New System.Drawing.Size(576,
 277)
            Me.listBox1.TabIndex = 0

            ' ComponentClass.
            Me.Controls.AddRange(New System.Windows.Forms.Control()
 {Me.listBox1})
            Me.Name = "ComponentClass"
            Me.Size = New System.Drawing.Size(624,
 320)

            Me.ResumeLayout(False)
        End Sub

        ' This override allows the control to register event handlers
 for IComponentChangeService events
        ' at the time the control is sited, which happens only in design
 mode.
        Public Overrides Property
 Site() As ISite
            Get
                Return MyBase.Site
            End Get
            Set(ByVal Value As
 ISite)
                ' Clear any component change event handlers.
                ClearChangeNotifications()

                ' Set the new Site value.
                MyBase.Site = Value

                m_changeService = CType(GetService(GetType(IComponentChangeService)),
 IComponentChangeService)

                ' Register event handlers for component change events.
                RegisterChangeNotifications()
            End Set
        End Property

        Private Sub ClearChangeNotifications()
            ' The m_changeService value is null when not in design mode,
 
            ' as the IComponentChangeService is only available at design
 time.    
            m_changeService = CType(GetService(GetType(IComponentChangeService)),
 IComponentChangeService)

            ' Clear our the component change events to prepare for re-siting.
                
            If Not (m_changeService Is
 Nothing) Then
                RemoveHandler m_changeService.ComponentChanged,
 AddressOf OnComponentChanged
                RemoveHandler m_changeService.ComponentChanging,
 AddressOf OnComponentChanging
                RemoveHandler m_changeService.ComponentAdded,
 AddressOf OnComponentAdded
                RemoveHandler m_changeService.ComponentAdding,
 AddressOf OnComponentAdding
                RemoveHandler m_changeService.ComponentRemoved,
 AddressOf OnComponentRemoved
                RemoveHandler m_changeService.ComponentRemoving,
 AddressOf OnComponentRemoving
                RemoveHandler m_changeService.ComponentRename,
 AddressOf OnComponentRename
            End If
        End Sub

        Private Sub RegisterChangeNotifications()
            ' Register the event handlers for the IComponentChangeService
 events
            If Not (m_changeService Is
 Nothing) Then
                AddHandler m_changeService.ComponentChanged, AddressOf
 OnComponentChanged
                AddHandler m_changeService.ComponentChanging,
 AddressOf OnComponentChanging
                AddHandler m_changeService.ComponentAdded, AddressOf
 OnComponentAdded
                AddHandler m_changeService.ComponentAdding, AddressOf
 OnComponentAdding
                AddHandler m_changeService.ComponentRemoved, AddressOf
 OnComponentRemoved
                AddHandler m_changeService.ComponentRemoving,
 AddressOf OnComponentRemoving
                AddHandler m_changeService.ComponentRename, AddressOf
 OnComponentRename
            End If
        End Sub

        ' This method handles the OnComponentChanged event to display
 a notification. 
        Private Sub OnComponentChanged(ByVal
 sender As Object, ByVal
 ce As ComponentChangedEventArgs)
            If Not (ce.Component Is
 Nothing) And Not (CType(ce.Component,
 IComponent).Site Is Nothing) And Not (ce.Member Is Nothing)
 Then
                OnUserChange(("The " + ce.Member.Name
 + " member of the " + CType(ce.Component, IComponent).Site.Name
 + " component has been changed."))
            End If
        End Sub

        ' This method handles the OnComponentChanging event to display
 a notification. 
        Private Sub OnComponentChanging(ByVal
 sender As Object, ByVal
 ce As ComponentChangingEventArgs)
            If Not (ce.Component Is
 Nothing) And Not (CType(ce.Component,
 IComponent).Site Is Nothing) And Not (ce.Member Is Nothing)
 Then
                OnUserChange(("The " + ce.Member.Name
 + " member of the " + CType(ce.Component, IComponent).Site.Name
 + " component is being changed."))
            End If
        End Sub

        ' This method handles the OnComponentAdded event to display
 a notification. 
        Private Sub OnComponentAdded(ByVal
 sender As Object, ByVal
 ce As ComponentEventArgs)
            OnUserChange(("A component, " + ce.Component.Site.Name
 + ", has been added."))
        End Sub

        ' This method handles the OnComponentAdding event to display
 a notification. 
        Private Sub OnComponentAdding(ByVal
 sender As Object, ByVal
 ce As ComponentEventArgs)
            OnUserChange(("A component of type " +
 (CType(ce.Component, Component)).GetType().FullName + " is being
 added."))
        End Sub

        ' This method handles the OnComponentRemoved event to display
 a notification. 
        Private Sub OnComponentRemoved(ByVal
 sender As Object, ByVal
 ce As ComponentEventArgs)
            OnUserChange(("A component, " + ce.Component.Site.Name
 + ", has been removed."))
        End Sub

        ' This method handles the OnComponentRemoving event to display
 a notification. 
        Private Sub OnComponentRemoving(ByVal
 sender As Object, ByVal
 ce As ComponentEventArgs)
            OnUserChange(("A component, " + ce.Component.Site.Name
 + ", is being removed."))
        End Sub

        ' This method handles the OnComponentRename event to display
 a notification. 
        Private Sub OnComponentRename(ByVal
 sender As Object, ByVal
 ce As ComponentRenameEventArgs)
            OnUserChange(("A component, " + ce.OldName
 + ", was renamed to " + ce.NewName + "."))
        End Sub

        ' This method adds a specified notification message to the control's
 listbox.
        Private Sub OnUserChange(ByVal
 [text] As String)
            listBox1.Items.Add([text])
        End Sub

        ' Clean up any resources being used.
        Protected Overloads Sub
 Dispose(ByVal disposing As Boolean)
            If disposing Then
                ClearChangeNotifications()

                If Not (components Is
 Nothing) Then
                    components.Dispose()
                End If
            End If
            MyBase.Dispose(disposing)
        End Sub

    End Class
End Namespace
using System;
using System.Data;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Windows.Forms;

/*  This sample illustrates how to use the IComponentChangeService interface 
    to handle component change events.  The ComponentClass control attaches 
    event handlers when it is sited in a document, and displays
 a message 
    when notification that a component has been added, removed, or changed
    is received from the IComponentChangeService.

    To run this sample, add the ComponentClass control to a Form
 and
    add, remove, or change components to see the behavior of the
    component change event handlers. */

namespace IComponentChangeServiceExample 
{
    public class ComponentClass : System.Windows.Forms.UserControl
 
    {
        private System.ComponentModel.Container components = null;
    private System.Windows.Forms.ListBox listBox1;
    private IComponentChangeService m_changeService;
 
    public ComponentClass() 
    {
        InitializeComponent();
    }

    private void InitializeComponent() 
    {
          this.listBox1 = new System.Windows.Forms.ListBox();
        this.SuspendLayout();

         // listBox1.
        this.listBox1.Location = new System.Drawing.Point(24,
 16);
        this.listBox1.Name = "listBox1";
        this.listBox1.Size = new System.Drawing.Size(576,
 277);
        this.listBox1.TabIndex = 0;
           
        // ComponentClass.
        this.Controls.AddRange(new System.Windows.Forms.Control[]
 {this.listBox1});
        this.Name = "ComponentClass";
        this.Size = new System.Drawing.Size(624,
 320);

            this.ResumeLayout(false);
    }

    // This override allows the control to register event handlers for
 IComponentChangeService events
    // at the time the control is sited, which happens only in design
 mode.
    public override ISite Site 
    {
        get 
        {
        return base.Site;
        }
        set 
        {        
        // Clear any component change event handlers.
        ClearChangeNotifications();        
                
        // Set the new Site value.
        base.Site = value;

        m_changeService = (IComponentChangeService)GetService(typeof(IComponentChangeService));

        // Register event handlers for component change events.
        RegisterChangeNotifications();            
        }
    }

    private void ClearChangeNotifications()
    {
        // The m_changeService value is null when not in design mode,
 
        // as the IComponentChangeService is only available at design
 time.    
        m_changeService = (IComponentChangeService)GetService(typeof(IComponentChangeService));

         // Clear our the component change events to prepare for re-siting.
                
        if (m_changeService != null) 
        {
         m_changeService.ComponentChanged -= new ComponentChangedEventHandler(OnComponentChanged);
        m_changeService.ComponentChanging -= new ComponentChangingEventHandler(OnComponentChanging);
        m_changeService.ComponentAdded -= new ComponentEventHandler(OnComponentAdded);
        m_changeService.ComponentAdding -= new ComponentEventHandler(OnComponentAdding);
        m_changeService.ComponentRemoved -= new ComponentEventHandler(OnComponentRemoved);
        m_changeService.ComponentRemoving -= new ComponentEventHandler(OnComponentRemoving);
        m_changeService.ComponentRename -= new ComponentRenameEventHandler(OnComponentRename);
        }
    }

    private void RegisterChangeNotifications()
    {
        // Register the event handlers for the IComponentChangeService
 events
        if (m_changeService != null) 
        {
        m_changeService.ComponentChanged += new ComponentChangedEventHandler(OnComponentChanged);
        m_changeService.ComponentChanging += new ComponentChangingEventHandler(OnComponentChanging);
        m_changeService.ComponentAdded += new ComponentEventHandler(OnComponentAdded);
        m_changeService.ComponentAdding += new ComponentEventHandler(OnComponentAdding);
        m_changeService.ComponentRemoved += new ComponentEventHandler(OnComponentRemoved);
        m_changeService.ComponentRemoving += new ComponentEventHandler(OnComponentRemoving);
        m_changeService.ComponentRename += new ComponentRenameEventHandler(OnComponentRename);
        }
    }

    /* This method handles the OnComponentChanged event to display a notification.
 */
    private void OnComponentChanged(object
 sender, ComponentChangedEventArgs ce) 
    {
         if( ce.Component != null &&
 ((IComponent)ce.Component).Site != null && ce.Member
 != null ) 
        OnUserChange("The " + ce.Member.Name + " member of the "
 + ((IComponent)ce.Component).Site.Name + " component has been changed.");
    }

    /* This method handles the OnComponentChanging event to display a notification.
 */
    private void OnComponentChanging(object
 sender, ComponentChangingEventArgs ce) 
    {
        if( ce.Component != null &&
 ((IComponent)ce.Component).Site != null && ce.Member
 != null ) 
        OnUserChange("The " + ce.Member.Name + " member of the "
 + ((IComponent)ce.Component).Site.Name + " component is being changed.");
    }

    /* This method handles the OnComponentAdded event to display a notification.
 */
    private void OnComponentAdded(object sender,
 ComponentEventArgs ce) 
    {            
        OnUserChange("A component, " + ce.Component.Site.Name + ",
 has been added.");
    }

    /* This method handles the OnComponentAdding event to display a notification.
 */        
    private void OnComponentAdding(object sender,
 ComponentEventArgs ce) 
    {            
        OnUserChange("A component of type " + ce.Component.GetType().FullName
 + " is being added.");
    }

    /* This method handles the OnComponentRemoved event to display a notification.
 */
    private void OnComponentRemoved(object
 sender, ComponentEventArgs ce) 
    {
        OnUserChange("A component, " + ce.Component.Site.Name + ",
 has been removed.");
    }

    /* This method handles the OnComponentRemoving event to display a notification.
 */
    private void OnComponentRemoving(object
 sender, ComponentEventArgs ce) 
    {
        OnUserChange("A component, " + ce.Component.Site.Name + ",
 is being removed.");
    }

    /* This method handles the OnComponentRename event to display a notification.
 */
    private void OnComponentRename(object sender,
 ComponentRenameEventArgs ce) 
    {
        OnUserChange("A component, " + ce.OldName + ", was renamed
 to " + ce.NewName +".");
    }

    // This method adds a specified notification message to the control's
 listbox.
    private void OnUserChange(string
 text) 
    {
        listBox1.Items.Add(text);
    }

    // Clean up any resources being used.
    protected override void Dispose( bool
 disposing ) 
    {
        if( disposing ) 
        {
        ClearChangeNotifications();
            
        if(components != null) 
        {
            components.Dispose();
        }
        }
        base.Dispose( disposing );
    }
    }
}
#using <system.dll>
#using <system.windows.forms.dll>
#using <system.drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Collections;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Windows::Forms;

/*  This sample illustrates how to use the IComponentChangeService interface
    to handle component change events.  The ComponentClass control attaches
    event handlers when it is sited in a document, and displays
 a message
    when notification that a component has been added, removed, or changed
    is received from the IComponentChangeService.

    To run this sample, add the ComponentClass control to a Form
 and
    add, remove, or change components to see the behavior of the
    component change event handlers. */

public ref class ComponentClass: public
 UserControl
{
private:
   System::ComponentModel::Container^ components;
   ListBox^ listBox1;
   IComponentChangeService^ m_changeService;
   void InitializeComponent()
   {
      this->listBox1 = gcnew ListBox;
      this->SuspendLayout();

      // listBox1.
      this->listBox1->Location = System::Drawing::Point(
 24, 16 );
      this->listBox1->Name = "listBox1";
      this->listBox1->Size = System::Drawing::Size( 576,
 277 );
      this->listBox1->TabIndex = 0;

      // ComponentClass.
      array<Control^>^myArray = {listBox1};
      this->Controls->AddRange( myArray );
      this->Name = "ComponentClass";
      this->Size = System::Drawing::Size( 624, 320 );
      this->ResumeLayout( false );
   }

   void ClearChangeNotifications()
   {
      // The m_changeService value is 0 when not in design mode,
      // as the IComponentChangeService is only available at design
 time.
      m_changeService = dynamic_cast<IComponentChangeService^>(GetService(
 IComponentChangeService::typeid ));

      // Clear our the component change events to prepare for re-siting.
      if ( m_changeService != nullptr )
      {
         m_changeService->ComponentChanged -= gcnew ComponentChangedEventHandler(
 this, &ComponentClass::OnComponentChanged );
         m_changeService->ComponentChanging -= gcnew ComponentChangingEventHandler(
 this, &ComponentClass::OnComponentChanging );
         m_changeService->ComponentAdded -= gcnew ComponentEventHandler( this,
 &ComponentClass::OnComponentAdded );
         m_changeService->ComponentAdding -= gcnew ComponentEventHandler( this,
 &ComponentClass::OnComponentAdding );
         m_changeService->ComponentRemoved -= gcnew ComponentEventHandler( this,
 &ComponentClass::OnComponentRemoved );
         m_changeService->ComponentRemoving -= gcnew ComponentEventHandler( this,
 &ComponentClass::OnComponentRemoving );
         m_changeService->ComponentRename -= gcnew ComponentRenameEventHandler(
 this, &ComponentClass::OnComponentRename );
      }
   }

   void RegisterChangeNotifications()
   {
      // Register the event handlers for the IComponentChangeService
 events
      if ( m_changeService != nullptr )
      {
         m_changeService->ComponentChanged += gcnew ComponentChangedEventHandler(
 this, &ComponentClass::OnComponentChanged );
         m_changeService->ComponentChanging += gcnew ComponentChangingEventHandler(
 this, &ComponentClass::OnComponentChanging );
         m_changeService->ComponentAdded += gcnew ComponentEventHandler( this,
 &ComponentClass::OnComponentAdded );
         m_changeService->ComponentAdding += gcnew ComponentEventHandler( this,
 &ComponentClass::OnComponentAdding );
         m_changeService->ComponentRemoved += gcnew ComponentEventHandler( this,
 &ComponentClass::OnComponentRemoved );
         m_changeService->ComponentRemoving += gcnew ComponentEventHandler( this,
 &ComponentClass::OnComponentRemoving );
         m_changeService->ComponentRename += gcnew ComponentRenameEventHandler(
 this, &ComponentClass::OnComponentRename );
      }
   }

   /* This method handles the OnComponentChanged event to display a notification.
 */
   void OnComponentChanged( Object^ /*sender*/, ComponentChangedEventArgs^
 ce )
   {
      if ( ce->Component != nullptr && static_cast<IComponent^>(ce->Component)->Site
 != nullptr && ce->Member != nullptr )
            OnUserChange( "The " + ce->Member->Name + " member
 of the " + static_cast<IComponent^>(ce->Component)->Site->Name
 + " component has been changed." );
   }


   /* This method handles the OnComponentChanging event to display a notification.
 */
   void OnComponentChanging( Object^ /*sender*/, ComponentChangingEventArgs^
 ce )
   {
      if ( ce->Component != nullptr && static_cast<IComponent^>(ce->Component)->Site
 != nullptr && ce->Member != nullptr )
            OnUserChange( "The " + ce->Member->Name + " member
 of the " + static_cast<IComponent^>(ce->Component)->Site->Name
 + " component is being changed." );
   }

   /* This method handles the OnComponentAdded event to display a notification. */
   void OnComponentAdded( Object^ /*sender*/, ComponentEventArgs^
 ce )
   {
      OnUserChange( "A component, " + ce->Component->Site->Name
 + ", has been added." );
   }

   /* This method handles the OnComponentAdding event to display a notification.
 */
   void OnComponentAdding( Object^ /*sender*/, ComponentEventArgs^
 ce )
   {
      OnUserChange( "A component of type " + ce->Component->GetType()->FullName
 + " is being added." );
   }

   /* This method handles the OnComponentRemoved event to display a notification.
 */
   void OnComponentRemoved( Object^ /*sender*/, ComponentEventArgs^
 ce )
   {
      OnUserChange( "A component, " + ce->Component->Site->Name
 + ", has been removed." );
   }

   /* This method handles the OnComponentRemoving event to display a notification.
 */
   void OnComponentRemoving( Object^ /*sender*/, ComponentEventArgs^
 ce )
   {
      OnUserChange( "A component, " + ce->Component->Site->Name
 + ", is being removed." );
   }

   /* This method handles the OnComponentRename event to display a notification.
 */
   void OnComponentRename( Object^ /*sender*/, ComponentRenameEventArgs^
 ce )
   {
      OnUserChange( "A component, " + ce->OldName + ", was renamed
 to " + ce->NewName + "." );
   }

   // This method adds a specified notification message to the control's
 listbox.
   void OnUserChange( String^ text )
   {
      listBox1->Items->Add( text );
   }

public:
   ComponentClass()
   {
      InitializeComponent();
   }

   property ISite^ Site 
   {
      // This override allows the control to register event handlers for
 IComponentChangeService events
      // at the time the control is sited, which happens only in design
 mode.
      virtual ISite^ get() override
      {
         return Site;
      }

      virtual void set( ISite^ value ) override
      {
         // Clear any component change event handlers.
         ClearChangeNotifications();

         // Set the new Site value.
         Site = value;
         m_changeService = static_cast<IComponentChangeService^>(GetService(
 IComponentChangeService::typeid ));

         // Register event handlers for component change events.
         RegisterChangeNotifications();
      }
   }

   // Clean up any resources being used.
public:
   ~ComponentClass()
   {
      ClearChangeNotifications();
      if ( components != nullptr )
      {
         delete components;
      }
   }
};
import System.*;
import System.Data.*;
import System.Drawing.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.ComponentModel.Design.*;
import System.Windows.Forms.*;

/*  This sample illustrates how to use the IComponentChangeService interface
    to handle component change events.  The ComponentClass control attaches 
    event handlers when it is sited in a document, and displays
 a message 
    when notification that a component has been added, removed, or changed
    is received from the IComponentChangeService.

    To run this sample, add the ComponentClass control to a Form
 and
    add, remove, or change components to see the behavior of the
    component change event handlers. 
 */

public class ComponentClass extends System.Windows.Forms.UserControl
{
    private System.ComponentModel.Container components = null;
    private System.Windows.Forms.ListBox listBox1;
    private IComponentChangeService m_changeService;

    public ComponentClass()
    {
        InitializeComponent();
    } //ComponentClass

    private void InitializeComponent()
    {
        this.listBox1 = new System.Windows.Forms.ListBox();
        this.SuspendLayout();

        // listBox1.
        this.listBox1.set_Location(new System.Drawing.Point(24
,16));
        this.listBox1.set_Name("listBox1");
        this.listBox1.set_Size(new System.Drawing.Size(576,
 277));
        this.listBox1.set_TabIndex(0);

        // ComponentClass.
        this.get_Controls().AddRange(new 
            System.Windows.Forms.Control[] {this.listBox1 });
        this.set_Name("ComponentClass");
        this.set_Size(new System.Drawing.Size(624,
 320));
        this.ResumeLayout(false);
    } //InitializeComponent

    // This override allows the control to register event handlers for
 
    // IComponentChangeService events
    // at the time the control is sited, which happens only in design
 mode.
    /** @property
     */
    public ISite get_Site()
    {
        return super.get_Site();
    } //get_Site

    /** @property 
     */
    public void set_Site(ISite value)
    {
        // Clear any component change event handlers.
        ClearChangeNotifications();

        // Set the new Site value.
        super.set_Site(value);
        m_changeService = (IComponentChangeService)
            GetService(IComponentChangeService.class.ToType());
        // Register event handlers for component change events.
        RegisterChangeNotifications();
    } //set_Site

    private void ClearChangeNotifications()
    {
        // The m_changeService value is null when not in design mode,
 
        // as the IComponentChangeService is only available at design
 time.
        m_changeService = (IComponentChangeService)
            GetService(IComponentChangeService.class.ToType());

        // Clear our the component change events to prepare for re-siting.
            
        if (m_changeService != null) {
            m_changeService.remove_ComponentChanged(new 
                ComponentChangedEventHandler(OnComponentChanged));
            m_changeService.remove_ComponentChanging(new 
                ComponentChangingEventHandler(OnComponentChanging));
            m_changeService.remove_ComponentAdded(new 
                ComponentEventHandler(OnComponentAdded));
            m_changeService.remove_ComponentAdding(new 
                ComponentEventHandler(OnComponentAdding));
            m_changeService.remove_ComponentRemoved(new 
                ComponentEventHandler(OnComponentRemoved));
            m_changeService.remove_ComponentRemoving(new 
                ComponentEventHandler(OnComponentRemoving));
            m_changeService.remove_ComponentRename(new 
                ComponentRenameEventHandler(OnComponentRename));
        }
    } //ClearChangeNotifications

    private void RegisterChangeNotifications()
    {
        // Register the event handlers for the IComponentChangeService
 events
        if (m_changeService != null) {
            m_changeService.add_ComponentChanged(new 
                ComponentChangedEventHandler(OnComponentChanged));
            m_changeService.add_ComponentChanging(new 
                ComponentChangingEventHandler(OnComponentChanging));
            m_changeService.add_ComponentAdded(new 
                ComponentEventHandler(OnComponentAdded));
            m_changeService.add_ComponentAdding(new 
                ComponentEventHandler(OnComponentAdding));
            m_changeService.add_ComponentRemoved(new 
                ComponentEventHandler(OnComponentRemoved));
            m_changeService.add_ComponentRemoving(new 
                ComponentEventHandler(OnComponentRemoving));
            m_changeService.add_ComponentRename(new 
                ComponentRenameEventHandler(OnComponentRename));
        }
    } //RegisterChangeNotifications

    /* This method handles the OnComponentChanged event to 
        // display a notification. 
     */

    private void OnComponentChanged(Object
 sender, ComponentChangedEventArgs ce)
    {
        if (ce.get_Component() != null &&
 
            ((IComponent)ce.get_Component()).get_Site() != null
 &&
            ce.get_Member() != null) {
            OnUserChange("The " + ce.get_Member().get_Name() 
                + " member of the " 
                + ((IComponent)ce.get_Component()).get_Site().get_Name() 
                + " component has been changed.");
        }
    } //OnComponentChanged

    /* This method handles the OnComponentChanging event to
        display a notification. 
     */
    private void OnComponentChanging(Object
 sender,
        ComponentChangingEventArgs ce)
    {
        if (ce.get_Component() != null &&
 
            ((IComponent)ce.get_Component()).get_Site() != null
 && 
            ce.get_Member() != null) {
            OnUserChange(("The " + ce.get_Member().get_Name() 
                + " member of the " 
                + ((IComponent)ce.get_Component()).get_Site().get_Name() 
                + " component is being changed."));
        }
    } //OnComponentChanging

    /* This method handles the OnComponentAdded event 
        to display a notification.
     */
    private void OnComponentAdded(Object sender,
 ComponentEventArgs ce)
    {
        OnUserChange("A component, " + ce.get_Component().get_Site().get_Name()
            + ", has been added.");
    } //OnComponentAdded

    /* This method handles the OnComponentAdding event 
        to display a notification. 
     */
    private void OnComponentAdding(Object sender,
 ComponentEventArgs ce)
    {
        OnUserChange("A component of type " 
            + ce.get_Component().GetType().get_FullName() 
            + " is being added.");
    } //OnComponentAdding

    /* This method handles the OnComponentRemoved event 
        to display a notification. 
     */
    private void OnComponentRemoved(Object
 sender, ComponentEventArgs ce)
    {
        OnUserChange("A component, " + ce.get_Component().get_Site().get_Name()
            + ", has been removed.");
    } //OnComponentRemoved

    /* This method handles the OnComponentRemoving event 
        to display a notification. 
     */
    private void OnComponentRemoving(Object
 sender, ComponentEventArgs ce)
    {
        OnUserChange("A component, " + ce.get_Component().get_Site().get_Name()
            + ", is being removed.");
    } //OnComponentRemoving

    /* This method handles the OnComponentRename event
        to display a notification.
     */
    private void OnComponentRename(Object sender,
 ComponentRenameEventArgs ce)
    {
        OnUserChange("A component, " + ce.get_OldName() + ", was renamed
 to " 
            + ce.get_NewName() + ".");
    } //OnComponentRename

    // This method adds a specified notification message
    // to the control's listbox.
    private void OnUserChange(String text)
    {
        listBox1.get_Items().Add(text);
    } //OnUserChange

    // Clean up any resources being used.
    protected void Dispose(boolean disposing)
    {
        if (disposing) {
            ClearChangeNotifications();
            if (components != null) {
                components.Dispose();
            }
        }
        super.Dispose(disposing);
    } //Dispose
} //ComponentClass
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
IComponentChangeService メンバ
System.ComponentModel.Design 名前空間
ComponentEventHandler デリゲート
ComponentChangedEventHandler デリゲート
ComponentChangingEventHandler デリゲート
ComponentRenameEventHandler デリゲート
MemberDescriptor クラス
DesignerTransaction クラス

IComponentChangeService メソッド


パブリック メソッドパブリック メソッド

参照参照

関連項目

IComponentChangeService インターフェイス
System.ComponentModel.Design 名前空間
ComponentEventHandler デリゲート
ComponentChangedEventHandler デリゲート
ComponentChangingEventHandler デリゲート
ComponentRenameEventHandler デリゲート
MemberDescriptor クラス
DesignerTransaction クラス

IComponentChangeService メンバ

コンポーネント追加変更削除、または名前変更イベントイベント ハンドラ追加および削除するためのインターフェイス提供すると共に、ComponentChanged イベントまたは ComponentChanging イベント発生させるメソッド提供します

IComponentChangeService データ型公開されるメンバを以下の表に示します


パブリック メソッドパブリック メソッド
パブリック イベントパブリック イベント
  名前 説明
パブリック イベント ComponentAdded コンポーネント追加されたときに発生します
パブリック イベント ComponentAdding コンポーネント追加されているときに発生します
パブリック イベント ComponentChanged コンポーネント変更されたときに発生します
パブリック イベント ComponentChanging コンポーネント変更されているときに発生します
パブリック イベント ComponentRemoved コンポーネント削除されたときに発生します
パブリック イベント ComponentRemoving コンポーネント削除されているときに発生します
パブリック イベント ComponentRename コンポーネントの名前が変更されたときに発生します
参照参照

関連項目

IComponentChangeService インターフェイス
System.ComponentModel.Design 名前空間
ComponentEventHandler デリゲート
ComponentChangedEventHandler デリゲート
ComponentChangingEventHandler デリゲート
ComponentRenameEventHandler デリゲート
MemberDescriptor クラス
DesignerTransaction クラス



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「IComponentChangeService」の関連用語

IComponentChangeServiceのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



IComponentChangeServiceのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS