<?xml version="1.0" encoding="utf-8"?>
<Type Name="IComponentChangeService" FullName="System.ComponentModel.Design.IComponentChangeService">
  <TypeSignature Language="C#" Maintainer="auto" Value="public interface IComponentChangeService" />
  <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IComponentChangeService" />
  <AssemblyInfo>
    <AssemblyName>System</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00]</AssemblyPublicKey>
    <AssemblyVersion>1.0.3300.0</AssemblyVersion>
    <AssemblyVersion>1.0.5000.0</AssemblyVersion>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
    <AssemblyVersion>4.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the &lt;link location="node:gtk-sharp/programming/threads"&gt;Gtk# Thread Programming&lt;/link&gt; for details.</ThreadSafetyStatement>
  <Interfaces />
  <Attributes>
    <Attribute>
      <AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName>
    </Attribute>
  </Attributes>
  <Docs>
    <remarks>
      <attribution license="cc4" from="Microsoft" modified="false" />
      <para>
        <see cref="T:System.ComponentModel.Design.IComponentChangeService" /> provides an interface that can be used to indicate the methods that handle the following events: </para>
      <list type="bullet">
        <item>
          <para>
            <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentAdded" />, raised when a component is added.</para>
        </item>
        <item>
          <para>
            <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentAdding" />, raised when a component is about to be added.</para>
        </item>
        <item>
          <para>
            <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanged" />, raised when a component is changed.</para>
        </item>
        <item>
          <para>
            <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanging" />, raised when a component is about to be changed.</para>
        </item>
        <item>
          <para>
            <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentRemoved" />, raised when a component is removed.</para>
        </item>
        <item>
          <para>
            <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentRemoving" />, raised when a component is about to be removed.</para>
        </item>
        <item>
          <para>
            <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentRename" />, raised when a component is renamed.</para>
        </item>
      </list>
      <para>Typically, the design environment raises these component add, change, remove, or rename events. Designers should call the methods of this interface when using <see cref="T:System.ComponentModel.Design.DesignerTransaction" /> objects to provide undo and redo functionality for design-time actions that affect components. More information is available in the documentation for <see cref="T:System.ComponentModel.Design.DesignerTransaction" />. Generally, only the root designer handles these change notifications.</para>
      <para>This service also provides methods that raise a component changed event or component changing event. A <see cref="T:System.ComponentModel.PropertyDescriptor" /> or a component can indicate that a component has changed or is changing with the <see cref="M:System.ComponentModel.Design.IComponentChangeService.OnComponentChanged(System.Object,System.ComponentModel.MemberDescriptor,System.Object,System.Object)" /> and <see cref="M:System.ComponentModel.Design.IComponentChangeService.OnComponentChanging(System.Object,System.ComponentModel.MemberDescriptor)" /> methods, respectively.</para>
    </remarks>
    <summary>
      <attribution license="cc4" from="Microsoft" modified="false" />
      <para>Provides an interface to add and remove the event handlers for events that add, change, remove or rename components, and provides methods to raise a <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanged" /> or <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanging" /> event.</para>
    </summary>
  </Docs>
  <Members>
    <Member MemberName="ComponentAdded">
      <MemberSignature Language="C#" Value="public event System.ComponentModel.Design.ComponentEventHandler ComponentAdded;" />
      <MemberSignature Language="ILAsm" Value=".event class System.ComponentModel.Design.ComponentEventHandler ComponentAdded" />
      <MemberType>Event</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.ComponentModel.Design.ComponentEventHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>This event occurs during load and when new components are created by the user, after the component has been sited.</para>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Occurs when a component has been added.</para>
        </summary>
      </Docs>
    </Member>
    <Member MemberName="ComponentAdding">
      <MemberSignature Language="C#" Value="public event System.ComponentModel.Design.ComponentEventHandler ComponentAdding;" />
      <MemberSignature Language="ILAsm" Value=".event class System.ComponentModel.Design.ComponentEventHandler ComponentAdding" />
      <MemberType>Event</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.ComponentModel.Design.ComponentEventHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>This event occurs during load and when the user creates a new component. You can cancel the process of adding a component by throwing an exception here.</para>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Occurs when a component is in the process of being added.</para>
        </summary>
      </Docs>
    </Member>
    <Member MemberName="ComponentChanged">
      <MemberSignature Language="C#" Value="public event System.ComponentModel.Design.ComponentChangedEventHandler ComponentChanged;" />
      <MemberSignature Language="ILAsm" Value=".event class System.ComponentModel.Design.ComponentChangedEventHandler ComponentChanged" />
      <MemberType>Event</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.ComponentModel.Design.ComponentChangedEventHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>This event occurs when any component on the form changes. This event will not occur during form load and unload, because changes are expected at this time.</para>
          <block subset="none" type="note">
            <para>A <see cref="T:System.ComponentModel.Design.DesignerTransaction" /> can raise multiple <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanged" /> events. Some <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanged" /> event handlers can interfere with expected sequences of events, such as if your code alters the values of properties while a transaction is occurring. A <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanged" /> event handler can also impair performance if it draws after each change while a <see cref="T:System.ComponentModel.Design.DesignerTransaction" /> is in progress. In order to allow a <see cref="T:System.ComponentModel.Design.DesignerTransaction" /> in process to complete without interruption or interference by your <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanged" /> event handler, you can test the state of the <see cref="P:System.ComponentModel.Design.IDesignerHost.InTransaction" /> property, and defer handling the change events until the completion of the transaction by adding a <see cref="T:System.ComponentModel.Design.DesignerTransactionCloseEventHandler" /> which will raise your <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanged" /> event handler and remove itself upon completion of the transaction.</para>
          </block>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Occurs when a component has been changed.</para>
        </summary>
      </Docs>
    </Member>
    <Member MemberName="ComponentChanging">
      <MemberSignature Language="C#" Value="public event System.ComponentModel.Design.ComponentChangingEventHandler ComponentChanging;" />
      <MemberSignature Language="ILAsm" Value=".event class System.ComponentModel.Design.ComponentChangingEventHandler ComponentChanging" />
      <MemberType>Event</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.ComponentModel.Design.ComponentChangingEventHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>This event occurs before the component is actually changed, and gives the designer a chance to abort the change or perform any pre-change processing. This event does not occur during form load and unload, because changes are expected at this time.</para>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Occurs when a component is in the process of being changed.</para>
        </summary>
      </Docs>
    </Member>
    <Member MemberName="ComponentRemoved">
      <MemberSignature Language="C#" Value="public event System.ComponentModel.Design.ComponentEventHandler ComponentRemoved;" />
      <MemberSignature Language="ILAsm" Value=".event class System.ComponentModel.Design.ComponentEventHandler ComponentRemoved" />
      <MemberType>Event</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.ComponentModel.Design.ComponentEventHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>This event occurs during unload and when a component is deleted by the user. The event occurs before the site has been removed from the component.</para>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Occurs when a component has been removed.</para>
        </summary>
      </Docs>
    </Member>
    <Member MemberName="ComponentRemoving">
      <MemberSignature Language="C#" Value="public event System.ComponentModel.Design.ComponentEventHandler ComponentRemoving;" />
      <MemberSignature Language="ILAsm" Value=".event class System.ComponentModel.Design.ComponentEventHandler ComponentRemoving" />
      <MemberType>Event</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.ComponentModel.Design.ComponentEventHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>This event occurs during unload and when the user deletes a component. You can cancel the process of removing a component by throwing an exception here.</para>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Occurs when a component is in the process of being removed.</para>
        </summary>
      </Docs>
    </Member>
    <Member MemberName="ComponentRename">
      <MemberSignature Language="C#" Value="public event System.ComponentModel.Design.ComponentRenameEventHandler ComponentRename;" />
      <MemberSignature Language="ILAsm" Value=".event class System.ComponentModel.Design.ComponentRenameEventHandler ComponentRename" />
      <MemberType>Event</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.ComponentModel.Design.ComponentRenameEventHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>This event occurs after the <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanged" /> event when a component has been renamed.</para>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Occurs when a component is renamed.</para>
        </summary>
      </Docs>
    </Member>
    <Member MemberName="OnComponentChanged">
      <MemberSignature Language="C#" Value="public void OnComponentChanged (object component, System.ComponentModel.MemberDescriptor member, object oldValue, object newValue);" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void OnComponentChanged(object component, class System.ComponentModel.MemberDescriptor member, object oldValue, object newValue) cil managed" />
      <MemberType>Method</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="component" Type="System.Object" />
        <Parameter Name="member" Type="System.ComponentModel.MemberDescriptor" />
        <Parameter Name="oldValue" Type="System.Object" />
        <Parameter Name="newValue" Type="System.Object" />
      </Parameters>
      <Docs>
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>This method raises the <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanged" /> event.</para>
          <para>Most designers that ship with the winsdklong, as well as the Visual Studio design-time environment, typically raise this event for you when a component in a project is changed, so most of the time you do not need to explicitly call this method. The appropriate <see cref="T:System.ComponentModel.Design.IComponentChangeService" /> events are automatically raised when a <see cref="T:System.ComponentModel.PropertyDescriptor" /> is used to change a property value or components are added or removed from the <see cref="T:System.ComponentModel.Design.IDesignerHost" /> container.</para>
          <para>Before calling <see cref="M:System.ComponentModel.Design.IComponentChangeService.OnComponentChanged(System.Object,System.ComponentModel.MemberDescriptor,System.Object,System.Object)" />, first call <see cref="M:System.ComponentModel.Design.IComponentChangeService.OnComponentChanging(System.Object,System.ComponentModel.MemberDescriptor)" /> to indicate that a component is about to change, and make the change. Then call <see cref="M:System.ComponentModel.Design.IComponentChangeService.OnComponentChanged(System.Object,System.ComponentModel.MemberDescriptor,System.Object,System.Object)" /> to raise the <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanged" /> event.</para>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Announces to the component change service that a particular component has changed.</para>
        </summary>
        <param name="component">
          <attribution license="cc4" from="Microsoft" modified="false" />The component that has changed. </param>
        <param name="member">
          <attribution license="cc4" from="Microsoft" modified="false" />The member that has changed. This is null if this change is not related to a single member. </param>
        <param name="oldValue">
          <attribution license="cc4" from="Microsoft" modified="false" />The old value of the member. This is valid only if the member is not null. </param>
        <param name="newValue">
          <attribution license="cc4" from="Microsoft" modified="false" />The new value of the member. This is valid only if the member is not null. </param>
      </Docs>
    </Member>
    <Member MemberName="OnComponentChanging">
      <MemberSignature Language="C#" Value="public void OnComponentChanging (object component, System.ComponentModel.MemberDescriptor member);" />
      <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void OnComponentChanging(object component, class System.ComponentModel.MemberDescriptor member) cil managed" />
      <MemberType>Method</MemberType>
      <AssemblyInfo>
        <AssemblyVersion>1.0.5000.0</AssemblyVersion>
        <AssemblyVersion>2.0.0.0</AssemblyVersion>
        <AssemblyVersion>4.0.0.0</AssemblyVersion>
      </AssemblyInfo>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="component" Type="System.Object" />
        <Parameter Name="member" Type="System.ComponentModel.MemberDescriptor" />
      </Parameters>
      <Docs>
        <remarks>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>This method raises the <see cref="E:System.ComponentModel.Design.IComponentChangeService.ComponentChanging" /> event.</para>
          <para>Most designers included with the winsdklong, as well as the Visual Studio design-time environment, typically raise this event automatically; so most of the time, you do not need to explicitly call this method. The appropriate <see cref="T:System.ComponentModel.Design.IComponentChangeService" /> events are automatically raised when a <see cref="T:System.ComponentModel.PropertyDescriptor" /> is used to change a property value or components are added or removed from the <see cref="T:System.ComponentModel.Design.IDesignerHost" /> container.</para>
        </remarks>
        <summary>
          <attribution license="cc4" from="Microsoft" modified="false" />
          <para>Announces to the component change service that a particular component is changing.</para>
        </summary>
        <param name="component">
          <attribution license="cc4" from="Microsoft" modified="false" />The component that is about to change. </param>
        <param name="member">
          <attribution license="cc4" from="Microsoft" modified="false" />The member that is changing. This is null if this change is not related to a single member. </param>
      </Docs>
    </Member>
  </Members>
</Type>