ComponentDesigner-Klasse
Aktualisiert: November 2007
Erweitert das Entwurfsmodusverhalten einer Komponente.
Assembly: System.Design (in System.Design.dll)
public class ComponentDesigner : ITreeDesigner, IDesigner, IDisposable, IDesignerFilter, IComponentInitializer
public class ComponentDesigner implements ITreeDesigner, IDesigner, IDisposable, IDesignerFilter, IComponentInitializer
public class ComponentDesigner implements ITreeDesigner, IDesigner, IDisposable, IDesignerFilter, IComponentInitializer
Die ComponentDesigner-Designerbasisklasse stellt einen einfachen Designer bereit, der das Verhalten einer zugeordneten Komponente im Entwurfsmodus erweitern kann.
ComponentDesigner stellt eine leere IDesignerFilter-Schnittstellenimplementierung bereit, deren Methoden überschrieben werden können, um die Attribute, Eigenschaften und Ereignisse der zugeordneten Komponenten zur Entwurfszeit anzupassen.
Mit einem DesignerAttribute können Sie einem Designer einen Typ zuordnen. Eine Übersicht über das Anpassen des Entwurfszeitverhaltens finden Sie unter Erweitern der Entwurfszeitunterstützung.
Die ComponentDesigner-Klasse implementiert ein spezielles Verhalten für die Eigenschaftendeskriptoren geerbter Komponenten. Der interne Typ InheritedPropertyDescriptor wird von der ComponentDesigner-Implementierung als Ersatz für Eigenschaften verwendet, die von einer Basisklasse geerbt werden. In zwei Fällen werden diese Eigenschaftendeskriptoren hinzugefügt.
Dem Stammobjekt selbst, das von der IDesignerHost.RootComponent-Eigenschaft zurückgegeben wird, da Sie von deren Basisklasse erben.
Feldern in der Basisklasse des Stammobjekts. Öffentliche und geschützte Felder in der Basisklasse werden dem Designer so hinzugefügt, dass diese vom Benutzer bearbeitet werden können.
Die InheritedPropertyDescriptor-Klasse ändert den Standardwert einer Eigenschaft, sodass der Standardwert bei der Objektinstanziierung als aktueller Wert verwendet wird. Der Grund dafür besteht darin, dass die Eigenschaft von einer anderen Instanz geerbt wird. Der Designer definiert das erneute Festlegen des Eigenschaftenwerts als Festlegen auf den von der geerbten Klasse festgelegten Wert. Dieser Wert unterscheidet sich möglicherweise von dem in den Metadaten gespeicherten Standardwert.
Das folgende Codebeispiel enthält eine ComponentDesigner-Beispielimplementierung und eine dem Designer zugeordnete Beispielkomponente. Der Designer implementiert eine Überschreibung der Initialize-Methode, die die Initialize-Basismethode aufruft, eine Überschreibung der DoDefaultAction-Methode, die beim Doppelklicken auf die Komponente eine MessageBox anzeigt, und eine Überschreibung des Verbs-Eigenschaftenaccessors, der im Kontextmenü für die Komponente einen benutzerdefinierten DesignerVerb-Menübefehl bereitstellt.
using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing; using System.Windows.Forms; namespace ExampleComponent { // Provides an example component designer. public class ExampleComponentDesigner : System.ComponentModel.Design.ComponentDesigner { public ExampleComponentDesigner() { } // This method provides an opportunity to perform processing when a designer is initialized. // The component parameter is the component that the designer is associated with. public override void Initialize(System.ComponentModel.IComponent component) { // Always call the base Initialize method in an override of this method. base.Initialize(component); } // This method is invoked when the associated component is double-clicked. public override void DoDefaultAction() { MessageBox.Show("The event handler for the default action was invoked."); } // This method provides designer verbs. public override System.ComponentModel.Design.DesignerVerbCollection Verbs { get { return new DesignerVerbCollection( new DesignerVerb[] { new DesignerVerb("Example Designer Verb Command", new EventHandler(this.onVerb)) } ); } } // Event handling method for the example designer verb private void onVerb(object sender, EventArgs e) { MessageBox.Show("The event handler for the Example Designer Verb Command was invoked."); } } // Provides an example component associated with the example component designer. [DesignerAttribute(typeof(ExampleComponentDesigner), typeof(IDesigner))] public class ExampleComponent : System.ComponentModel.Component { public ExampleComponent() { } } }
package ExampleComponent;
import System.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.ComponentModel.Design.*;
import System.Drawing.*;
import System.Windows.Forms.*;
// Provides an example component designer.
public class ExampleComponentDesigner
extends System.ComponentModel.Design.ComponentDesigner
{
public ExampleComponentDesigner()
{
} //ExampleComponentDesigner
// This method provides an opportunity to perform processing when a
// designer is initialized.The component parameter is the component that
// the designer is associated with.
public void Initialize(System.ComponentModel.IComponent component)
{
// Always call the base Initialize method in an override of this method.
super.Initialize(component);
} //Initialize
// This method is invoked when the associated component is double-clicked.
public void DoDefaultAction()
{
MessageBox.Show("The event handler for the default action was invoked.");
} //DoDefaultAction
// This method provides designer verbs.
/** @property
*/
public System.ComponentModel.Design.DesignerVerbCollection get_Verbs()
{
return new DesignerVerbCollection(new DesignerVerb[]
{ new DesignerVerb("Example Designer Verb Command",
new EventHandler(this.OnVerb)) });
} //get_Verbs
// Event handling method for the example designer verb
private void OnVerb(Object sender, EventArgs e)
{
MessageBox.Show("The event handler for the Example Designer Verb"
+ " Command was invoked.");
} //OnVerb
} //ExampleComponentDesigner
// Provides an example component associated with the example component designer.
/** @attribute DesignerAttribute(ExampleComponentDesigner.class, IDesigner.class)
*/
public class ExampleComponent extends System.ComponentModel.Component
{
public ExampleComponent()
{
} //ExampleComponent
} //ExampleComponent
System.ComponentModel.Design.ComponentDesigner
System.Diagnostics.Design.ProcessDesigner
System.Diagnostics.Design.ProcessModuleDesigner
System.Diagnostics.Design.ProcessThreadDesigner
System.Messaging.Design.MessageDesigner
System.ServiceProcess.Design.ServiceControllerDesigner
System.Web.UI.Design.HtmlControlDesigner
System.Windows.Forms.Design.ComponentDocumentDesigner
System.Windows.Forms.Design.ControlDesigner
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.