2008-08-19 4 views
3

Ich habe ein UserControl erstellt, das eine ListView enthält. Der ListView ist über eine Eigenschaft öffentlich zugänglich. Wenn ich das UserControl in ein Formular einfüge und versuche, das ListView durch die Eigenschaft zu entwerfen, bleibt das ListView auf diese Weise, bis ich erneut kompiliere, und es wird zu dem Standardstatus zurückgesetzt.Probleme mit .Net UserControl

Wie bekomme ich meine Designänderungen für die ListView?

Antwort

6

Sie müssen die Listview-Eigenschaft mit dem DesignerSerializationVisibility Attribut schmücken, etwa so:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
public ListView MyListView { get { return this.listView1; } } 

diesem Zusammenhang die für sie Code-Generator zur Ausgabe Code des Designers erzählt.

0

Nur damit ich klar bin, haben Sie so etwas getan, richtig?

Also greifen Sie (zur Entwurfszeit) auf die MyListView -Eigenschaft auf Ihrem Benutzersteuerelement zu?

Ich denke, wenn Sie die richtige Design-Zeit-Unterstützung wollen Sie besser die "Modifier" -Eigenschaft auf der ListView selbst (zurück auf der ursprünglichen UserControl) zu Public ändern - so können Sie die ListView direkt auf Instanzen ändern das Benutzersteuerelement. Ich hatte Erfolg damit.

1

Fredrik ist im Grunde genommen richtig, wenn Sie den Designer aktivieren müssen, um die Eigenschaft für die Seite beizubehalten, damit sie zur Laufzeit instanziiert werden kann. Es gibt nur eine Möglichkeit, dies zu tun, nämlich seine Werte auf die ASPX-Seite zu schreiben, die dann von der Laufzeitumgebung übernommen wird.

Andernfalls wird das Steuerelement einfach jedes Mal in den Standardzustand zurückgesetzt.

Behalten Sie immer im Hinterkopf, dass die Seite (und ihr Inhalt) und der Code in ASP.NET vollständig getrennt sind und zur Laufzeit miteinander verbunden sind. Dies bedeutet, dass Sie nicht die nette Code-Behind-Designer-Unterstützung erhalten, wie Sie es in einer WinForms-App tun (wo das Formular eine Instanz eines Objekts ist).