Ändern Sie die Hintergrundfarbe aller geöffneten forms-runtime in C#
gemäß dieser Thema
ich habe ein menustrip in C# (win-app) - Projekt , für das klicken auf jedes Einzelteil es wird ein Formular geöffnet!
wie gesagt, ich habe 37 Formen, und ich möchte, um dies zu tun : immer dann, wenn ein Formular geöffnet wird, das innerhalb der MainForm (Form1), indem Sie menustrip Artikel, den ich einstellen will Formulars wieder Farbe, aber ich will nicht, dies zu tun eins nach dem anderen(praktisch),gibt es eine Möglichkeit ?! danke .
- Sie möchten die Farbe jedes gezeigte form, indem Sie auf einige Menü-Item?
- Genau ! ich will jede gezeigte form wieder Farbe ich.e Blau !
- Schreiben Sie einfach eine einzelne Methode, die ein argument vom Typ Form.
- Blaue Formen? OMG 🙂
- Previti : ich sagte, im Beispiel blau !!!
- Die Antwort auf Ihre Frage ist hier richtig stackoverflow.com/questions/28614970/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist eine Möglichkeit zu schaffen, eine Basis der form-Klasse, die Sie verwenden können, in all Ihren Formen, von nun an.
Wenn Sie nicht wollen, ändern Sie Ihre Hintergrundfarbe für alle Formen, anstatt Ihre Formulare vererben von Form, machen Sie erbt von MyFormBaseClass.
Gibt es keine saubere Art und Weise zu verstehen, von dem, was form, die Sie öffnen ein Formular, außer Sie geben die owber form, wenn Sie myform.Show(this);
In MyFormBaseClass, überschreiben Sie OnLoad aus, und etwas wie dieses:
Können Sie diese zum hinzufügen von mehr komplexe Operationen zu, allen gemeinsam ist allen Ihren Formen.
Können Sie ersetzen Sie alle bilden Basisklassen, die mit einem suchen und ersetzen in allen Ihr Projekt.
Müssen Sie erstellen MyFormBaseClass als eine normale form zu halten, die designer arbeiten.
Drücken Sie STRG+H und wählen Sie "ersetzen" in allen Projekt -, ersetzen Sie" : - Formular" mit ": MyFormBaseClass", drücken Sie Weiter, bis Sie fertig sind, das heißt, die 37 mal.
Kann man ersetzen, auch .Show() mit .Show(this) wenn Sie das brauchen.
Meinst du das ? :
Im Menü-strip-click-Ereignishandler, wo Sie eigentlich zu Schuss form..
After-show-form...
müssen Sie zuerst speichern Sie alle geöffneten Formulare in eine Art Sammlung. Zum Beispiel:
jedes mal, wenn Sie öffnen ein Formular, das Sie hinzufügen, um diese Sammlung und fügen Sie eine geschlossen - handler zu entfernen, wenn es geschlossen ist:
Nun können Sie
ändern Sie die Farbe eines jeden von Ihnen.
PS: Wenn Sie hinzufügen, Sie als MDI-Kinder, die Sie tun können, ohne die Sammlung und Ihre
this.MdiChildren
statt:Es ist nicht ganz klar, was du meinst mit ein Formular geöffnet wird, das innerhalb der MainForm(Form1). Wenn Sie hinzufügen, Ihr Formular Form1 die Steuerelemente, die Sie verwenden können, die ControlAdded-Ereignis von Form1 mit so etwas wie dies:
Wenn dir ist einer Mdi-app, können Sie mit der MdiChildActivate Veranstaltung statt.
EDIT:
Natürlich dieser Ansatz funktioniert nur, WENN Sie fügen Sie die inneren Formen auf die wichtigsten Formular-Steuerelemente.
Sowieso, ich glaube nicht, dass die Art, wie eine Anwendung entwickelt werden sollten, getrieben von "ich will nicht zu ändern, 37 Methoden" und auf der Suche nach tricks und workarounds. Für mich die bessere und sauberere Lösung wäre in diesem Fall zu vermeiden, Unterklassen, Veranstaltungen und was auch immer und einfach zu implementieren eine neue Methode, wie diese in Ihrem Haupt-form:
Dann wirst du natürlich ändern müssen, um alle Methoden für die Menüpunkte aufrufen:
In dieser Art und Weise haben Sie zu ändern 37 Methoden (weniger als 10 Minuten Arbeit, denke ich), aber halten Sie Ihre Anwendung, sauber, offen für künftige änderungen und Erweiterungen. Alles andere kann Spaß machen und interessant zu Experimentieren, aber ich würde es nicht verwenden in der Produktion code.
Müssen Sie BaseForm-Klasse wie diese, ist Form-Klasse erbt
und die MainForm-Klasse wie diese, die erbt, die BaseForm-Klasse.
Alle Klassen Erben sollte BaseForm-Klasse anstelle der Form-Klasse, wie ich in MainForm-Klasse hier "public partial class MainForm : BaseForm"