DataGridViev Einstellparameter aus Config.iniI-Datei einlesen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Hubertus.

    DataGridViev Einstellparameter aus Config.iniI-Datei einlesen

    Hallo,
    ich habe im Internet schon kräftig gesucht, aber keine Lösung für mein Problem gefunden. Ich hoffe hier auf Hilfe.Kurz beschreiben, ich habe folgende Vorgaben. In meiner Software sich mehrere DGV-Tabellen, die ihre Daten aus CSV-Dateien beziehen. Dies funktioniert alles ohne Problem, aber nun habe ich Änderungsvorgaben erhalten. Diese DGV-Tabellen müssen in Zukunft per INI-Datei konfigurierbar sein. Beispiel von Einträgen in der INI

    Index=1
    ReadOnly=True
    AutoSize=DisplayedCells
    Width=100
    Resizable=False

    Alle Integer/String und Object Parameter (True/False) lassen sich ohne Probleme zu anwenden und zuweisen.

    WerteLesen(Spalte, "Visible") : Dim Visib As Object = IniLese
    Dim column As New DataGridViewTextBoxColumn
    With column
    .Visible = Visib
    .
    End With

    Nun mein Problem. Es gibt Parameter, die ich einfach nicht zuweisen kann. Ein Beispiel ist >AutoSizeMode<

    WerteLesen(Spalte, "AutoSize") : Dim ASize As String = CStr(IniLese)
    .
    .AutoSizeMode = DataGridViewAutoSizeColumnMode.ASize
    .
    Ich habe versucht, den eingelesenen String >ASize < mit verschiedenen Möglichkeiten zuzuweisen, aber bis jetzt leider kein Erfolg. Deshalb muss ich dies vorerst über eine umständliche/unpraktikable Lösung lösen.

    If ASize = "None" Then
    .AutoSizeMode = DataGridViewAutoSizeColumnMode.None
    ElseIf ASize = "Fill" Then
    .AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
    ElseIf ASize = "NotSet" Then
    .AutoSizeMode = DataGridViewAutoSizeColumnMode.NotSet
    ElseIf ASize = "DisplayedCells" Then
    .AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
    End If

    Kann mir hier jemand vielleicht helfen?

    Gruß Hubertus
    Es ist zwar etwas mühsam, das für jede Eigenschaft zu machen, aber etwas einfacher als Dein bisheriger Code:

    VB.NET-Quellcode

    1. For Each EnumValue As DataGridViewAutoSizeColumnsMode In [Enum].GetValues(GetType(DataGridViewAutoSizeColumnsMode))
    2. Dim EnumValueName = [Enum].GetName(GetType(DataGridViewAutoSizeColumnsMode), EnumValue)
    3. If EnumValueName = StringValueFromFile Then DataGridView1.AutoSizeColumnsMode = EnumValue
    4. Next


    StringValueFromFile ist der von Dir aus der ini-Datei eingelesene Wert

    Der Code geht durch die bekannten Werte eines enums/einer Aufzählung durch, ermittelt deren Name und vergleicht ihn mit der Textvorgabe. Bei Übereinstimmung wird die entsprechende Eigenschaft im DGV passend gesetzt.
    Ist zumindest eine konkrete Lösung für das Problem.
    Aber vielleicht geht es einfacher, wenn man die ini-Datei anders gestalten dürfte. Oder Settings abspeichert und nicht in ini-Files packt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Fakiz Jou.

    Hubertus schrieb:

    Diese DGV-Tabellen müssen in Zukunft per INI-Datei konfigurierbar sein.
    Wer speichert denn diese INI-Dateien?
    Sofern er in einem äquivalenten Programm steht:
    Sieh Dir den Speicher-Code an und reverse ihn.
    Insbesondere wenn der "aus der Luft gegriffen" wurde, musst Du abtesten, dass in den gelesenen Strings nicht irgend Zeugs wie "Roulade mit Klößen" drinne steht.
    Also stets mit ERWARTETER_TYP.TryParse().
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,

    sorry, das ich mich jetzt erst melde. Ich habe den Code von VaporiZed angewendet. Er funktioniert super und gewährleistet gleichzeitig, dass wirklich nur gültige Einträge reingeschrieben werden können.
    Nochmal vielen Dank für eure Hilfe :thumbsup:

    Gruß
    Hubert