C# zeigen browsable Kind Eigenschaften im designer
Ich mit .NET C# mit standard WinForms, nicht WPF.
Habe ich diese situation.
Ich bin erstellen Sie ein Steuerelement für ein-Monats-Kalender, ähnlich wie die .NET ein, aber mit ein wenig mehr Funktionalität.
Ich habe eine Benutzer-Steuerelement-Formular, das füllt sich mit button-Objekte, die Termine.
Die Tasten können gefärbt mit verschiedenen Farben, abhängig von Ihrem Zustand(selektiert, Maus über, am Wochenende...)
Den Weg möchte ich es auf der Arbeit ist die Ausweitung der button-Klasse zu akzeptieren Staaten, die bestimmen, Farben, anstatt färben Sie sich vom übergeordneten (user control) - Klasse. Es gibt 10 Farben im moment und ich würde wirklich möchte das nicht versauen, das Benutzersteuerelement code mit Farbstoff Bedingungen.
Ich würde auch gerne wählen Sie alle Farben, die zur design-Zeit, die mit browsable-designer Eigenschaften.
Das problem ist, dass der designer zeigt nur die Eigenschaften definiert, die in der Benutzer-Steuerelement-class, und nicht die Kinder (Tasten).
Gibt es Abhilfe für dieses problem?
Also um es kurz zu sagen ich will die Farben ändern über interne Schaltfläche Eigenschaften, und wählen Sie Sie zur design-Zeit, mit dem designer Eigenschaften, und nicht hart zu Kodieren Sie Sie manuell.
Das Kind ist eine einfache Klasse, die erweitert die Button-Klasse. Es verfügt über verschiedene Konstruktoren, je nach Größe, text und Lage. Id gerne alle Farben werden Eigenschaften dieser Klasse. Aber ich würde gerne wählen Sie aus dem user-control (parent) - designer-Eigenschaften-Fenster, wenn ich ziehen Sie das Benutzersteuerelement auf einem Rahmen.
Hinzugefügt Beispiel, ist, die Millionen Meilen entfernt?
InformationsquelleAutor Zoran Ivancevic | 2009-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, ich werde versuchen zu erklären, Trog-code:
Ich habe zum Beispiel ein Benutzer-Steuerelement und ein button-Klasse.
Ich möchte aufzeigen, Schaltfläche Eigenschaften, und machen Sie sichtbar unter MyControl Eigenschaften im designer.
Dies ist ein einfaches Beispiel. Normalerweise habe ich Sie 5 verschiedenen Stilen, einschließlich hintergrund-und Vordergrund-Farbe für jeden von Ihnen. So zu verwalten, sondern die Farben in MyControl-Klasse, würde ich mag, um zu definieren, Sie in die MyButton-Klasse. Aber das problem dieses Weges ist, dass die Eigenschaften in die MyButton-Klasse nicht sichtbar sind, in der designer, weil es nur konzentriert sich auf MyControl Eigenschaften.
Btw. ignorieren Sie die fehlenden Konstruktoren und andere grundlegende Klassen Sachen im code-Beispiel
Kann ich nicht verwenden:
weil ich 30 buttons in MyControl (Tage im Monat), und ich kann nicht Referenz nur ein einziges Objekt.
InformationsquelleAutor Zoran Ivancevic
Für eine Eigenschaft, um sichtbar zu werden, in der designer, müssen Sie öffentliche Eigenschaften mit getter-und setter - von dem, was Sie sagen, die Eigenschaften sind nur Getter. Sie können auch versuchen, die angeben BrowsableAttribute und BindableAttribute auf die Eigenschaften zu zwingen, die designer, um Sie anzuzeigen...
InformationsquelleAutor thecoop
Gibt es verschiedene Dinge, die Sie tun können, hier könnten Sie (obwohl Sie eine schlechte Antwort) stellen Sie die Steuerelemente in Frage, die auf der öffentlichen Schnittstelle - aber ich bin nicht sicher, dass ist eine tolle Idee.
Persönlich würde ich nur re-setzen Sie die Eigenschaften, die ich bin interessiert, vielleicht setzen Sie in eine andere
[Category(...)]
- machen Sie sicher, dass beide setter und Getter.Etwas wie:
InformationsquelleAutor Marc Gravell
Wenn alle Tasten in der Steuerung teilen das gleiche Aussehen, warum nicht setzen Sie die Eigenschaft auf der control-Ebene und die Eigenschaft setter-propagieren änderungen auf alle Tasten? Auch mit 30 einzelnen button-Steuerelemente scheint, wie viel Aufwand... habe Sie als Zeichnung die Bezeichnungen für die Wochentage und verarbeiten von Maustasten-Klick/hover-Ereignisse, um zu bestimmen, wenn ein bestimmter Tag angeklickt wird?
Was meinst du mit "viel Aufwand"? Performance-Probleme oder einfach nur eine Menge unnötiger code? Ich dachte an das manuelle erstellen der button-Klasse nicht nur Erben von Button und Implementierung der Funktionen, die ich brauche
InformationsquelleAutor lJohnson