2010-11-22 12 views
1

In .NET Framework gibt es mehrere Steuerelemente, die eine Liste der Links unterhalb der Eigenschaftsliste im Fenster Eigenschaften des Visual Studio-Designers auflisten. (z. B. TabControl, ComboBox)Wie kann ich im Fenster Eigenschaften für ein benutzerdefiniertes Steuerelement Verknüpfungen erstellen?

Ich habe ein benutzerdefiniertes Steuerelement erstellt, und ich möchte eine Verknüpfung im Eigenschaftenfenster wie TabControl und ComboBox erstellen. Wenn auf die Verknüpfung geklickt wird, sollte eine bestimmte Methode für mein Steuerelement aufgerufen werden.

Wie kann ich das tun?

Danke!

Antwort

1

Sie müssen einen benutzerdefinierten Designer für Ihr Steuerelement erstellen und die Eigenschaft Verbs überschreiben. Wenn Ihre Überschreibung zum ersten Mal aufgerufen wird, erstellen Sie eine DesignerVerbCollection und füllen Sie sie aus. Bei jedem weiteren Aufruf die Sammlung zurückgeben.

Edit: By the way, erstellen Sie den Designer durch von System.Windows.Forms.Design.ControlDesigner ableiten und Sie es Ihre Klasse anwenden, indem Sie dieses Attribut auf Klasse setzen:

[Designer(MyControlDesigner)] 
public class MyControl 
{ 
    // ... 
} 
0

devarticles

public class DirectoryTreeDesigner : ControlDesigner 
{ 

protected override void PostFilterProperties( 
System.Collections.IDictionary properties) 
{ 
    properties.Remove("Nodes"); 
} 

DesignerVerbCollection verbs = new DesignerVerbCollection(); 

public DirectoryTreeDesigner() 
{ 
    // Configure the designer verb collection. 
    string[] drives = System.IO.Directory.GetLogicalDrives(); 

    foreach (string drive in drives) 
    { 
     verbs.Add(new DesignerVerb("Set Drive " + drive, new EventHandler(OnVerb))); 
    } 
} 

public override DesignerVerbCollection Verbs 
{ 
    get { return verbs; } 
} 

protected void OnVerb(object sender, EventArgs e) 
{ 
    // Retrieve the selected drive. 
    char driveLetter = ((DesignerVerb)sender).Text[10]; 

    // Adjust the associated control. 
    ((DirectoryTree)this.Control).Drive = driveLetter; 
} 

}

+0

Das ist mir nicht helfen. Ich fragte, wie man einen Link unter dem Eigenschaftenraster anzeigt, wie die "Add Tab" und "Remove Tab" Links auf dem TabControl. Ich habe nicht gefragt, wie eine Eigenschaft für das Steuerelement erstellt werden soll. – AndyGeek

+0

@AndyGeek ... modifiziert ... –

Verwandte Themen