2009-03-23 9 views
3

Ich verwende visuelle Vererbung und fragte mich, ob es eine Möglichkeit gibt, die Eigenschaften von geerbten Steuerelementen zur Entwurfszeit zu ändern, vorzugsweise im Formular-Designer. Wenn nicht, dann im Designer-Code.Kann ich Eigenschaften von geerbten Steuerelementen zur Entwurfszeit ändern?

Ich habe meine Kontrolle in der Basisklasse als Public deklariert. Ich kann darauf im Kindformularcode zugreifen, aber nicht im Formulardesigner. Ist das nicht möglich?

+0

Für diejenigen, die immer noch interessiert sind, hier erklärt gut: http://StackOverflow.com/a/207549/908336 –

Antwort

-1

Sie müssen die Sichtbarkeit Ihrer Steuerelemente ändern. Setzen Sie die Steuereigenschaft Modifiers auf public und kompilieren Sie das Projekt erneut. Anschließend können Sie die Eigenschaften des geerbten Steuerelements ändern.

+0

Es scheint nur für bestimmte Kontrollen zu funktionieren, aber nicht alle und ich kann nicht verstehen, warum. Auf meinem Basisformular habe ich ein TabControl, das eine ComboBox, einen ToolStrip und ein DataGridView enthält. Alle von ihnen sind auf Public festgelegt, aber ich kann nur die Eigenschaften der ComboBox und nicht die anderen zwei Steuerelemente ändern. –

2

Es scheint nur für bestimmte Kontrollen zu funktionieren, aber nicht alle und ich kann nicht verstehen, warum. Auf meinem Basisformular habe ich ein TabControl, das eine ComboBox, einen ToolStrip und ein DataGridView enthält. Alle von ihnen sind auf Public festgelegt, aber ich kann nur die Eigenschaften der ComboBox und nicht die anderen zwei Steuerelemente ändern.

Ich habe keine Ahnung, warum das ist.

+0

Die Entwickler von ToolStrip und DGV unterstützen das einfach nicht. –

2

In Visual Studio gibt es Einschränkungen für die visuelle Vererbung. Leider abgeleiteten Formen \ usercontrols nicht Kontrollen enthalten Sammlungen innerhalb der Basis ändern können, nämlich DataGridViewRows, Toolstrips, ListViewColumns usw.

Microsoft Bug Report

Es gibt Möglichkeiten, um dies in bestimmten Situationen. Erstellen Sie eine geschützte Eigenschaft in der Basisklasse, die die genauen Eigenschaften des Steuerelements verfügbar macht, das Sie ändern möchten (DataGridView.BackgroundColor oder ListView.Columns).

Ihre Basisform sollte Zugriff auf diese Eigenschaft, um die erforderlichen Komponenten zu ändern. Ich habe dies für ListView.Columns und DataGridView.rows erfolgreich getan, aber ToolStrip.Items würde nicht funktionieren.

+0

Ich habe die gleiche Situation, es funktioniert für Button, aber nicht für toolstripe. – Thunder

Verwandte Themen