IExtenderProviderService Interface
.NET Framework 2.0
Provides an interface for adding and removing extender providers at design time.
Namespace: System.ComponentModel.Design
Assembly: System (in system.dll)
Assembly: System (in system.dll)
The following example demosntrates using the IExtenderProviderService from a designer to add and remove an IExtenderProvider implementation.
using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Windows.Forms; using System.Windows.Forms.Design; namespace ExtenderServiceExample { // This designer adds a ComponentExtender extender provider, // and removes it when the designer is destroyed. public class ExtenderServiceDesigner : System.Windows.Forms.Design.ControlDesigner { // A local reference to an obtained IExtenderProviderService. private IExtenderProviderService localExtenderServiceReference; // An IExtenderProvider that this designer supplies. private ComponentExtender extender; public ExtenderServiceDesigner() { } public override void Initialize(System.ComponentModel.IComponent component) { base.Initialize(component); // Attempts to obtain an IExtenderProviderService. IExtenderProviderService extenderService = (IExtenderProviderService)component.Site.GetService(typeof(IExtenderProviderService)); if( extenderService != null ) { // If the service was obtained, adds a ComponentExtender // that adds an "ExtenderIndex" integer property to the // designer's component. extender = new ComponentExtender(); extenderService.AddExtenderProvider( extender ); localExtenderServiceReference = extenderService; } else MessageBox.Show("Could not obtain an IExtenderProviderService."); } protected override void Dispose(bool disposing) { // Removes any previously added extender provider. if( localExtenderServiceReference != null ) { localExtenderServiceReference.RemoveExtenderProvider( extender ); localExtenderServiceReference = null; } } } // IExtenderProviderImplementation that adds an integer property // named "ExtenderIndex" to any design-mode document object. [ProvidePropertyAttribute("ExtenderIndex", typeof(IComponent))] public class ComponentExtender : System.ComponentModel.IExtenderProvider { // Stores the value of the property to extend a component with. public int index = 0; public ComponentExtender() { } public bool CanExtend(object extendee) { // Extends any type of object. return true; } public int GetExtenderIndex(IComponent component) { return index; } public void SetExtenderIndex(IComponent component, int index) { this.index = index; } } // Example UserControl associated with the ExtenderServiceDesigner. [DesignerAttribute(typeof(ExtenderServiceDesigner))] public class ExtenderServiceTestControl : System.Windows.Forms.UserControl { public ExtenderServiceTestControl() { } } }
package ExtenderServiceExample;
import System.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.ComponentModel.Design.*;
import System.Windows.Forms.*;
import System.Windows.Forms.Design.*;
// This designer adds a ComponentExtender extender provider,
// and removes it when the designer is destroyed.
public class ExtenderServiceDesigner extends
System.Windows.Forms.Design.ControlDesigner
{
// A local reference to an obtained IExtenderProviderService.
private IExtenderProviderService localExtenderServiceReference;
// An IExtenderProvider that this designer supplies.
private ComponentExtender extender;
public ExtenderServiceDesigner()
{
} //ExtenderServiceDesigner
public void Initialize(System.ComponentModel.IComponent component)
{
super.Initialize(component);
// Attempts to obtain an IExtenderProviderService.
IExtenderProviderService extenderService = (IExtenderProviderService)
component.get_Site().GetService(IExtenderProviderService.class.
ToType());
if (extenderService != null) {
// If the service was obtained, adds a ComponentExtender
// that adds an "ExtenderIndex" integer property to the
// designer's component.
extender = new ComponentExtender();
extenderService.AddExtenderProvider(extender);
localExtenderServiceReference = extenderService;
}
else {
MessageBox.Show("Could not obtain an IExtenderProviderService.");
}
} //Initialize
protected void Dispose(boolean disposing)
{
// Removes any previously added extender provider.
if (localExtenderServiceReference != null) {
localExtenderServiceReference.RemoveExtenderProvider(extender);
localExtenderServiceReference = null;
}
} //Dispose
} //ExtenderServiceDesigner
// IExtenderProviderImplementation that adds an integer property
// named "ExtenderIndex" to any design-mode document object.
/** @ attribute ProvidePropertyAttribute("ExtenderIndex",
IComponent.class.ToType())
*/
public class ComponentExtender implements
System.ComponentModel.IExtenderProvider
{
// Stores the value of the property to extend a component with.
public int index = 0;
public ComponentExtender()
{
} //ComponentExtender
public boolean CanExtend(Object extendee)
{
// Extends any type of object.
return true;
} //CanExtend
public int GetExtenderIndex(IComponent component)
{
return index;
} //GetExtenderIndex
public void SetExtenderIndex(IComponent component, int index)
{
this.index = index;
} //SetExtenderIndex
} //ComponentExtender
// Example UserControl associated with the ExtenderServiceDesigner.
/** @ attribute DesignerAttribute(ExtenderServiceDesigner.class.ToType())
*/
public class ExtenderServiceTestControl extends
System.Windows.Forms.UserControl
{
public ExtenderServiceTestControl()
{
} //ExtenderServiceTestControl
} //ExtenderServiceTestControl
Windows 98, Windows Server 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
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.