Benutzerdefinierte Einstellungsdatei

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Luftgekühlt.

    Benutzerdefinierte Einstellungsdatei

    Hallo,

    bei meinem aktuellen Projekt stoße ich derzeit auf kleine Schwierigkeiten und möchte nun hier fragen, ob zur Lösung des Problems jemand eine Idee hat. :)
    Ziel ist es, dass eingegebene Punkte aus einem 'Chart' bei Aufruf aus einer Einstellungsdatei geladen werden und bei Bedarf wieder geändert werden können.
    Dazu habe ich vor, die Funktion der Einstellungsdatei zu nutzen. Um dabei die Übersichtlichkeit beizubehalten und nicht die schon beschriebene My.Settings zu verwenden, habe ich über Projekt - Neues Element hinzufügen - Allgemein eine neue Einstellungsdatei generiert, bei dessen Zugriff ich aktuell jedoch scheitere…

    Die erstellten ChartSettings habe ich bislang wie folgt aufgebaut:
    NameTypBereichWert
    x1DoubleBenutzer150
    [...]DoubleBenutzer
    x31DoubleBenutzer225

    (Zugriffsmodifizierer: Friend)

    In dem Diagramm soll dann für jeden x-Wert (Diagrammbereich von der Anzahl der Tage im Monat abhängig) mit einer For-Schleife ein y-Wert zugeordnet werden.
    Wenn der Zugriff dann realisiert ist, soll noch über ein anderes Form die Anpassung der y-Werte ermöglicht werden (z.B. bei x1: Wert = Wert + Eingabe), wozu ich aber erst den Zugriff benötige.

    Um die Werte auszulesen und in das Diagramm zu übertragen, habe ich bislang folgenden Code:

    VB.NET-Quellcode

    1. Imports System.Windows.Forms.DataVisualization.Charting
    2. Public Class Chart
    3. Dim chartSettings As New ChartSettings
    4. Private Sub Chart_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. '[Aufbau des Diagramms]
    6. For i = 1 To lastDay 'lastDay = definierte Variable mit letzem Tag des Monats (28, 29, 30, 31)
    7. dChart.Series(0).Points.AddXY(i, chartSettings.Item("x" + i.ToString()))
    8. Next i
    9. End Sub
    10. End Class


    Doch bei jedem Durchlauf kommt als Ergebnis von x1, x2, … immer ein '0', auch wenn ich den Wert in einer MessageBox ausgeben lasse.
    Probiere ich den gleichen Zugriff über den Aufbau in den My.Settings funktioniert die Ausgabe tadellos…
    Gestern habe ich schon so einiges mit den My.Settings und eigenen Einstellungsdateien probiert. Zwischenzeitlich hat die Ausgabe im Diagramm durch die eigenen Einstellungsdateien auch funktioniert, doch jetzt scheint der Zugriff nicht ganz zu funktionieren… Über Fehler im Code oder in der Ausführung hat mich Visual Studio bislang nicht in Kenntnis gesetzt.

    Über jegliche Hilfe wie ich diesen Zugriff realisiere wäre ich sehr dankbar. :)

    Grüße

    ErfinderDesRades schrieb:

    eigene Einstellungsdatei

    Das ist eine eigens generierte Settingsklasse. Ist eigentlich nichts anderes als My.Settings - aber da muss man separat Speichern vor dem Schließen der Anwendung aufrufen. Das ist auch die Ursache, dass bei @Luftgekühlt seine Settings beim Neustart nicht aktuell bleiben...
    Hi ErfinderDesRades & VB1963,

    danke für eure Bemühungen.

    Der Anlass für meine Idee war dieser Eintrag im MSDN unter dem Reiter "Verwenden von benutzerdefinierten Einstellungsdateien".
    In erster Linie ging es mir bei meiner Idee darum, die Übersichtlichkeit für andere Parameter in der My.Settings beizubehalten und die 31 Werte dann in die eigene Einstellungsdatei auszulagern.

    Die eigene Settingsklasse hatte ich derzeit aber immer mit Testwerten beschrieben (<>0) und die Änderungen gespeichert (Strg+S). Beim einem solchen Aufruf aus den My.Settings, welche ich vorher genauso bezeichnet, funktionierte dieser Aufruf, aber bei meinen Tests mit der eigenen Settingsklasse sollten bislang auch nur die Werte abgerufen werden (entweder wie im Code für das Diagramm oder zur direkten Ausgabe in einer MsgBox), aber da waren die Werte eben "0". :/

    Meinst du mit

    VB1963 schrieb:

    separat Speichern vor dem Schließen der Anwendung
    die Save() und Reload()-Methoden? Die benötige ich doch nur für das Speichern, wenn ich die Werte mit dem anderen Form geändert habe, oder liege ich jetzt falsch?

    In diesem Thread wurde auch erwähnt, dass man mit den Speicherorten der Settingsklassen vorsichtig sein sollte. Habt ihr irgendwelche Tipps, wie ich die Settings dann möglich fest im Programm verankern kann, damit die Connection-Strings und Werte des Diagramms stetig verfügbar sind (?), bzw. wie sie dann im Release verfügbar sind, da ich dazu jetzt bislang noch nichts gefunden habe.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Luftgekühlt“ ()

    Luftgekühlt schrieb:

    Save()

    Ja - diese Methode meine ich da und die führst du bei deiner neuen Settigsklasse vor dem Schließen deiner Anwendung aus...
    Die standardmäßigen Settings werden beim Schließen der Anwendung automatisch gespeichert, soferne diese Checkbox in den Anwendungseigenschaften aktiviert ist
    Das gilt aber nicht für die Eigenschaften bei deinen extra erstellten Settingsklasse, da musst du sie per Code speichern...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()

    Vielen Dank für deinen Ansatz!

    Mein Problem lag darin, dass ich zwischenzeitlich in der Entwurfsansicht der eigenen Settingsklasse Beispielwerte eingetragen habe, die dann nur leider nicht wie gewünscht gespeichert wurden…
    Wenn ich nun die Werte über das andere Form anpasse (+ Save() ), lassen sich die Werte wieder anstandslos verwenden und ausgeben.

    Gab es noch spezielle Einstellungen oder Anforderungen für die Settingsklassen, um diese dann auch nach Fertigstellung in einer *.exe verfügbar zu machen?
    Ob im Debug- oder Releasemodus ist eigentlich egal...

    Man muss noch folgende Methoden beachten:

    MSDN schrieb:

    Die Reset-Methode überschreibt die die Benutzer betreffenden Einstellungseigenschaften, indem sie den aktuell beibehaltenen Wert der einzelnen Anwendungseinstellungen wiederherstellt. Diese Methode führt die folgenden Aktionen aus:
    Sie ruft die IApplicationSettingsProvider.Reset-Methode auf jedem Einstellungsanbieter auf, der diese optionale Methode unterstützt.
    Sie ruft die Reload-Methode auf, um eine Aktualisierung der Einstellungseigenschaftswerte zu erzwingen.

    Reload steht Reset gegenüber, wobei im erstgenannten Fall die letzte Gruppe von gespeicherten Anwendungseinstellungswerten, im letzteren Fall jedoch die gespeicherten Standardwerte geladen werden.