Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

IComponentChangeService (Interfaz)

Proporciona una interfaz para agregar y quitar los controladores de eventos que agregan, cambian, quitan o cambian de nombre componentes, y proporciona métodos para iniciar un evento ComponentChanged o ComponentChanging.

Espacio de nombres:  System.ComponentModel.Design
Ensamblado:  System (en System.dll)

[ComVisibleAttribute(true)]
public interface IComponentChangeService

El tipo IComponentChangeService expone los siguientes miembros.

  NombreDescripción
Método públicoOnComponentChangedAnuncia al servicio de cambio de componentes que un determinado componente ha cambiado.
Método públicoOnComponentChangingAnuncia al servicio de cambio de componentes que un determinado componente está cambiando.
Arriba

  NombreDescripción
Evento públicoComponentAddedSe produce cuando se ha agregado un componente.
Evento públicoComponentAddingSe produce cuando un componente está en el proceso de agregarse.
Evento públicoComponentChangedSe produce cuando se ha cambiado un componente.
Evento públicoComponentChangingSe produce cuando un componente está en el proceso de cambiarse.
Evento públicoComponentRemovedSe produce cuando se ha quitado un componente.
Evento públicoComponentRemovingSe produce cuando un componente está en el proceso de quitarse.
Evento públicoComponentRenameSe produce cuando se cambia el nombre de un componente.
Arriba

IComponentChangeService proporciona una interfaz que se puede usar para indicar los métodos que controlan los siguientes eventos:

Normalmente, el entorno de diseño provoca los eventos de agregar, cambiar, quitar o cambiar el nombre de componentes. Los diseñadores deben llamar a los métodos de esta interfaz cuando usen objetos DesignerTransaction para proporcionar la funcionalidad de deshacer y rehacer para acciones en tiempo de diseño que afecten a los componentes. Existe más información en la documentación de DesignerTransaction. Por lo general, sólo el diseñador raíz controla estas notificaciones de cambio.

Este servicio también proporciona métodos que provocan eventos de un componente cambiado o de un componente que va a cambiar. Un PropertyDescriptor o un componente pueden indicar que un componente ha cambiado o va a cambiar con los métodos OnComponentChanged y OnComponentChanging, respectivamente.

En el siguiente ejemplo se muestra cómo utilizar la interfaz IComponentChangeService para recibir notificaciones sobre los componentes agregados, eliminados o modificados en tiempo de diseño.


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 );
	}
    }
}


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft