myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE7
   » Gadget für Vista
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin
» Accessoires

Ressourcen
» .NET-Glossar
» guide to C#
» openbook: Visual C#
» openbook: OO
» .NET BlogBook
» MSDN Webcasts
» dotnetjob.de
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Bankverbindung
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Formatierung und Layout der Steuerelemente eines Forms zur Laufzeit laden/festlegen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Formatierung und Layout der Steuerelemente eines Forms zur Laufzeit laden/festlegen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
tux86
myCSharp.de-Mitglied

Dabei seit: 05.05.2010
Beiträge: 44


tux86 ist offline

Formatierung und Layout der Steuerelemente eines Forms zur Laufzeit laden/festlegen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich suche eine Möglichkeit ein Klasse oder Bibliothek mit voll fomratierten Steuerelementen zu erstellen und mein Forms dann praktisch zur Laufzeit zu formatieren.

Hintergrund:

Man hat eine Anwendung mit ca. 10 - 15 Forms in denen TextBoxen, ComboBoxen etc. benutzt werden. nun sollen ja auch alle forms gleich aussehen.
Das heißt ich muss jedee einzele Steuerelement anfassen und den jeweiligen Bestimmungen anpassen. Ändert sich mal was muss ich wieder in jede einzelne Form rein.

Jetzt werden wahrscheinlich einige sagen, erstelle die Form doch via Code. Aber das kann heut zu Tage doch nicht mehr der Maß der Dinge sein, oder?

Also würde ich gern eine Klasse erstellen aus der ich dann zur Laufzeit die Formatierungen laden kann leider geht das so natürlich nicht.

C#-Code:
public partial class Form2 : Form
    {
        Form1 form1 = new Form1();

        public Form2()
        {
            InitializeComponent();
            label1 = form1.label1;
            button1 = form1.button1;
            textBox1 = form1.textBox1;
        }


    }

Hat jemand eine Idee? Oder sowas schon einmal irgendwo gesehen? Beim Suchen habe ich nichts gefunden, vielleicht habe ich aber auch mit den falschen Parametern gesucht(?)
24.04.2012 11:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt Abt ist männlich
myCSharp.de-Team (Moderation)

images/avatars/avatar-2981.png


Dabei seit: 20.07.2008
Beiträge: 3.376
Entwicklungsumgebung: VS2010, VS2012, ReSharper
Herkunft: Stuttgart


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von tux86:
Aber das kann heut zu Tage doch nicht mehr der Maß der Dinge sein, oder?

Richtig. Deswegen gibts hierfür auch eine neue Technologie mit dem Namen WPF.
Windows Forms ist hier eher bedingt geeignet.
24.04.2012 12:25 Beiträge des Benutzers | zu Buddylist hinzufügen
FZelle
myCSharp.de-Poweruser/ Experte

Dabei seit: 23.04.2004
Beiträge: 8.478


FZelle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@tux86:
Im gegensatz zu abt weis ich das das sehr wohl und auch recht einfach mit WindowsForms geht.
Du müsstest nur anfangen dich mal mit OOP und Architektur zu beschäftigen.

Was Du machen willst nennt sich Skinning und unter dem Stichwort findest Du hier haufenweise antworten.



Sorry aber was Du da als code zeigst ist eindeutig ein Hinweis das du keinen blassen schimmer hast was Du machst.
24.04.2012 12:30 Beiträge des Benutzers | zu Buddylist hinzufügen
Console32
myCSharp.de-Mitglied

Dabei seit: 19.12.2011
Beiträge: 205


Console32 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Man kann auch bei Windows Forms, Schriftart / Grüße etc an die app.config Binden.
 [Tutorial] Konfigurationsmodell im .NET Framework
24.04.2012 12:32 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
tux86
myCSharp.de-Mitglied

Dabei seit: 05.05.2010
Beiträge: 44

Themenstarter Thema begonnen von tux86

tux86 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

danke für die Antworten.
Jetzt habe ich etwas um weiter zu suchen.

Manchmal sieht man einfach den Wald vor lauter Bäumen nicht.

Falls noch mehr Alternativen exisitieren, immer her damit.
24.04.2012 15:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
tux86
myCSharp.de-Mitglied

Dabei seit: 05.05.2010
Beiträge: 44

Themenstarter Thema begonnen von tux86

tux86 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

So folgendes habe ich jetzt mal gemacht

eine Form StandardForm für:
Größe und Aussehen ohne Controls

ein Form StandardControls implements StandardForm für:
Größe und Aussehen der Controls
Mit der Funktion

C#-Code:
public void copyProperties(Control copy, Control original)
        {
            List<string> properties = new List<string>();
            properties.Add("Height");
            properties.Add("Width");
            properties.Add("DropDownStyle");
            properties.Add("DropDownHeight");
            properties.Add("DropDownWidth");

            properties.Add("BackColor");
            properties.Add("BackgroundImage");
            properties.Add("BackgroundImageLayout");
            properties.Add("UseVisualStyleBackColor");

            properties.Add("Font");
            properties.Add("ForeColor");
            properties.Add("TextAlign");

            properties.Add("Cursor");
            properties.Add("Anchor");
            properties.Add("Dock");

            List<string> props = new List<string>();
            Type type = original.GetType();
            foreach (PropertyInfo prop in type.GetProperties())
            {
                //if (prop.CanWrite)
                if (prop.CanWrite && properties.Contains(prop.Name))
                {
                    props.Add(prop.Name);
                    prop.SetValue(copy, prop.GetValue(original, null), null);
                }
            }
        }

Jetzt kann ich im Programm selbst eigene StandardForms erstellen
Beispiel StandardBooking implements StandardForm
Mit der Funktion

C#-Code:
private void formatControls()
        {
            Skinning.StandardControl stdControl = new Skinning.StandardControl();
            //Label
            stdControl.copyProperties(label1, stdControl.lblHeading);
            stdControl.copyProperties(label2, stdControl.lblNormal);
            stdControl.copyProperties(label3, stdControl.lblNormal);
            //TextBox
            stdControl.copyProperties(textBox1, stdControl.tbxNormal);
            stdControl.copyProperties(textBox2, stdControl.tbxLarge);
            //ComboBox
            stdControl.copyProperties(comboBox1, stdControl.cbxLarge);
            //Button
            stdControl.copyProperties(button1, stdControl.btnLarge);
        }

Die eigentliche GUI wiederum greift dann auf die zugeschnittenen StandardForms über Vererbung zu
Beispiel CreateBooking implements StandardBooking
und ViewBooking implements StandardBooking

Diese Forms kann ich wiederum um weitere StandardControls erweitern:
Zum Beispiel einen weiteren Button, der dann wieder zur Laufzeit formatiert wird

C#-Code:
stdControl.copyProperties(button1, stdControl.btnLarge);

Was haltet ihr davon?

Die AppConfig-Variante würde ich dann nutzen um User-Formatierungen zu speichern (Fenstergrößen, DataGrid-Sortierungen etc.)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von tux86 am 15.05.2012 10:11.

15.05.2012 10:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Team (Admin)

images/avatars/avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 47.474
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo tux86,

Zitat:
Was haltet ihr davon?

bekommst du damit hin, was du willst? Ist die Code-Menge, die du schreiben musst, um so ein geskinntes Form zu erstellen, akzeptabel? Sind Änderungen mit akzeptablem Aufwand zu realisieren? Wenn du alle Fragen mit ja beantwortest, ist doch alles ok.

herbivore
15.05.2012 10:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2013 myCSharp.de-Team. Alle Rechte vorbehalten. 18.05.2013 15:41