Autor Beitrag
EdiZ84
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 01.12.09 21:14 
Hallo Leute, hab ein kleines Problem.

Möchte Einstellungen von Benutzer des Programms speichern. (Ich habe schon viel Beiträge dazu gelesen, und weis wie man die einzelne Einstellungen speichert, nur bei handelt es sich um ein komplexeres Problem, also bitte erst weiterlesen:)))) )

Habe eine Form mit einem DataGridView mit 52 splaten. In diesen DataGridView soll man ja bestimmte einstellungen machen können, wie z.B. spaltengröße, farbe, sortierModus, autosizemode usw.
Dafür müsste ich aber erst für alle Spalten einen Eintrag der Einstellung in einer Setting-File machen.

ausblenden C#-Quelltext
1:
2:
Properties.Settings dataGridViewSettings = Properties.Settings.Default; 
this.dataGridViewSettings.EinstellungX = wertX;


Dieses möchte ich per Code machen. Ich kann zwar neue Einstellungen per Code erstellen, aber leider nicht Speichern.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
System.Configuration.SettingsProperty settingPropertyName = new System.Configuration.SettingsProperty("DataGridViewColumn" + "_" + item.Index.ToString() + "_" + item.SubItems[1].Text);
settingPropertyName.DefaultValue = true;
this.dataGridViewColumnSettings.Properties.Add(settingPropertyName); //Das hinzufügen funktioniert zur Laufzeit, die objekte werden aber nicht in der Settings-Datei gespeichert bzw. geschrieben.  

this.dataGridViewColumnSettings.Save();


Zur Laufzeit erstellt er die Objekte. Aber wenn ich das Programm schließe sollen die neuen Einstellungen , die Per Code hinzugefügt wurden, gespeichert werden und in die Settings-Datei geschrieben werden. Ich möchte nicht jede einzelen einstellungen per Eingabe definieren.

Bitte helft mir, ich kann das zwar alles mit xml speichern, möchte ich aber nicht. Ich denke das dieses Verfahren das bessere ist. Für Verbesserungs-Vorschläge bin ich immer offen. (bin ja kein profi)

Danke euch im Voraus, Ciao
Falls ich mich schlecht ausgedrückt habe , bitte Info;))


Moderiert von user profile iconChristian S.: Topic aus Programmierwerkzeuge verschoben am Di 01.12.2009 um 20:35
EdiZ84 Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Di 01.12.09 21:16 
Ach ja, ein link falls einer nicht weis wovon ich rede!!!! msdn.microsoft.com/d...ibrary/bb397750.aspx

Leider wird dort alles angesprochen, bis auf mein Problem!!!!!!!!!
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 02.12.09 12:42 
Hallo,

das DataGridView ist für so etwas nicht vorgesehen. Es dient (wie der Name schon sagt) dazu, Daten in einem Grid zur Anzeige zu bringen. Du solltest also niemals Daten direkt im DGV speichern und bearbeiten, sondern dazu eine Daten-Klasse benutzen - vorzugsweise DataTable, aber auch anderes ist denkbar - siehe die Erläuterungen zu DataGridView.DataSource.

Wenn du DataTable nimmst, kannst du die Daten mit ReadXml und WriteXml ganz einfach speichern und einlesen.

Gruß Jürgen
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mi 02.12.09 13:37 
@Jürgen: Du solltest Dir angewöhnen, Beiträge komplett zu lesen!

@Edi: Ich bin mir nicht ganz sicher, aber ich glaube, dass Dein Vorhaben so von dieser Funktionalität nicht abgedeckt wird. Probier mal Folgendes aus: Erweitert die UserSettings-Datei im Benutzerprofil um eine Einstellung und versuche genau diese auszulesen. Wenn das nicht klappt, füge diese Einstellung in die zentrale config-Datei ein. Wenn es dann klappt, wird Dein Vorhaben schon von vornherein scheitern.

Grund: Um eine Einstellung hinzuzufügen, müsste die application.config erweitert werden und ein normaler User wird das Recht dazu nicht haben.

Was ich empfehlen würde: Erstell eine Eigenschaft GridSettings und speichere Deine Einstellungen dort in einem Dir bekannten Format. Mit Extension Methods würde ich dann das DataGrid erweitern, um diese Einstellungen aus dem String zu lesen oder in einen zu schreiben.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 02.12.09 14:55 
Durch direktes Bearbeiten der Settings.Designer.cs sollten sich beliebige Properties (also auch eine Property, die eine Liste der Spalteneinstellungen enthält) definieren lassen, was der VS-Designer anscheinend nicht unterstützt. Aber ich sehe darin keinen großen Vorteil gegenüber dem direkten Serialisieren per XmlSerializer in ein AppData-Verzeichnis :nixweiss: .

_________________
>λ=
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 02.12.09 15:56 
user profile iconUGrohne hat folgendes geschrieben Zum zitierten Posting springen:
@Jürgen: Du solltest Dir angewöhnen, Beiträge komplett zu lesen!

In der Tat. Entschuldigt bitte vielmals, dass ich immer so voreilig und vorlaut etwas Unpassendes schreibe; ich muss mir wirklich angewöhnen, zuerst zu lesen, dann nachzudenken und erst am Schluss (soweit noch angemessen) etwas von mir zu geben. Jürgen