Textbox Werte aus INI in die richtige Textbox schreiben

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von FloFuchs.

    Textbox Werte aus INI in die richtige Textbox schreiben

    Hallo Liebe Helfer,

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub txt_click(ByVal sender As Object, ByVal e As EventArgs) Handles TextBox18.DoubleClick, TextBox19.DoubleClick, TextBox20.DoubleClick, TextBox21.DoubleClick,
    2. TextBox22.DoubleClick, TextBox23.DoubleClick, TextBox24.DoubleClick, TextBox25.DoubleClick, TextBox26.DoubleClick, TextBox27.DoubleClick, TextBox28.DoubleClick, TextBox29.DoubleClick,
    3. TextBox30.DoubleClick, TextBox31.DoubleClick, TextBox32.DoubleClick, TextBox33.DoubleClick, TextBox34.DoubleClick, TextBox35.DoubleClick, TextBox36.DoubleClick,
    4. TextBox37.DoubleClick, TextBox38.DoubleClick, TextBox39.DoubleClick, TextBox40.DoubleClick, TextBox41.DoubleClick, TextBox42.DoubleClick, TextBox43.DoubleClick,
    5. TextBox44.DoubleClick, TextBox45.DoubleClick, TextBox46.DoubleClick, TextBox47.DoubleClick, TextBox48.DoubleClick, TextBox49.DoubleClick, TextBox50.DoubleClick,
    6. TextBox51.DoubleClick, TextBox52.DoubleClick, TextBox53.DoubleClick, TextBox54.DoubleClick, TextBox55.DoubleClick, TextBox56.DoubleClick, TextBox57.DoubleClick,
    7. TextBox58.DoubleClick, TextBox59.DoubleClick, TextBox60.DoubleClick, TextBox61.DoubleClick, TextBox62.DoubleClick, TextBox63.DoubleClick, TextBox64.DoubleClick,
    8. TextBox65.DoubleClick, TextBox66.DoubleClick, TextBox67.DoubleClick, TextBox68.DoubleClick, TextBox69.DoubleClick, TextBox70.DoubleClick, TextBox71.DoubleClick,
    9. TextBox72.DoubleClick, TextBox73.DoubleClick, TextBox74.DoubleClick, TextBox75.DoubleClick, TextBox76.DoubleClick, TextBox77.DoubleClick, TextBox78.DoubleClick,
    10. TextBox79.DoubleClick, TextBox80.DoubleClick, TextBox81.DoubleClick, TextBox82.DoubleClick, TextBox83.DoubleClick, TextBox84.DoubleClick, TextBox85.DoubleClick,
    11. TextBox86.DoubleClick, TextBox87.DoubleClick, TextBox88.DoubleClick, TextBox89.DoubleClick, TextBox90.DoubleClick, TextBox91.DoubleClick, TextBox92.DoubleClick,
    12. TextBox93.DoubleClick, TextBox94.DoubleClick, TextBox95.DoubleClick, TextBox96.DoubleClick, TextBox97.DoubleClick, TextBox98.DoubleClick, TextBox99.DoubleClick,
    13. TextBox100.DoubleClick, TextBox101.DoubleClick, TextBox102.DoubleClick, TextBox103.DoubleClick, TextBox104.DoubleClick, TextBox105.DoubleClick, TextBox106.DoubleClick,
    14. TextBox107.DoubleClick, TextBox108.DoubleClick, TextBox109.DoubleClick, TextBox110.DoubleClick, TextBox111.DoubleClick, TextBox112.DoubleClick, TextBox113.DoubleClick,
    15. TextBox114.DoubleClick, TextBox115.DoubleClick, TextBox116.DoubleClick, TextBox117.DoubleClick, TextBox118.DoubleClick, TextBox119.DoubleClick, TextBox120.DoubleClick,
    16. TextBox121.DoubleClick, TextBox122.DoubleClick, TextBox123.DoubleClick, TextBox124.DoubleClick, TextBox125.DoubleClick 'Das Clickevent dass jeder Box zugeordnet wird
    17. Dim _txt = DirectCast(sender, TextBox) 'erstmal aus dem Sender ne Textbox machen
    18. If String.IsNullOrEmpty(_txt.Text) Then 'nachsehen ob die angeklickte Box schon ein Element enthält
    19. If Not ComboBox1.SelectedItem Is Nothing Then 'Wenn ja schauen ob in der Combobox was ausgewählt is
    20. _txt.Text = ComboBox1.SelectedItem 'Wenn ja schreiben wir das in die Textbox
    21. End If
    22. For i = 0 To My.Application.OpenForms.Count - 1
    23. If TypeOf (My.Application.OpenForms.Item(i).ActiveControl) Is TextBox Then
    24. boxname = My.Application.OpenForms.Item(i).ActiveControl.Name
    25. 'Ini Datei schreiben'
    26. INIFile.WertSchreiben(boxname, "Inhalt", _txt.Text)
    27. End If
    28. Next
    29. Else
    30. _txt.Clear() 'Wenn schon was drin steht in der Textbox.. löschen
    31. End If


    ich schreibe mit diesem Code direkt in ein INI File, das so aussieht:


    [TextBox54]
    Inhalt=Elsi
    [TextBox75]
    Inhalt=Gyrmend
    [TextBox38]
    Inhalt=
    [txtKW126]
    KW=5
    [txtSchicht127]
    KW=Nacht



    jetzt möchte ich mit

    VB.NET-Quellcode

    1. INIFile.WertLesen(boxname_auslesen, "Inhalt")
    die Daten die unter den einzelnen Textboxen stehen
    auch wieder der richtigen Textbox zuweisen ... z.B. beim öffnendes Forms nur ich weiß nicht wie ich das hinbekommen soll

    wäre für Hilfe dankbar


    Ich verwende dazu eine Klasse für Verwendung von INI-Dateien

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

    Hallo timonator,
    soweit war ich auch schon :)

    Das Prob ist jetzt .. ich müsste bei allen 125 Textboxen jeweils eine Code Zeile schreiben.. das wäre nen bisschen viel :)
    boxname_auslesen beinhaltet ja eig. schon den Namen der Textbox.. man müsste Quasi nur das zusammen basteln ich weiß nur noch nicht wie
    du könntest Me.Controls in einer Schleife durchlaufen. Wenn es sich um eine Textbox handel könntest du anhand des Textbox-Namens daten aus der INI-Datei auslesen.

    Aber im ernst, das ist doch scheiße. Du hast da einequadrilliardenunddrölfzich-Textboxen, da muss (!) es doch eine bessere Möglichkeit geben. Wenn du da aber nicht umdenken willst und bei deinen tausend textboxen bleiben willst, musst du wenns hart auf hart kommt zwanzig seiten code schreiben, der sich nur in einzelnen zahlen änder. Schreib dir doch ein Programm umd den Code zu generieren xDD
    Witzbold :D

    der Code den ich da gepostet habe ..erkennt ja anhand des Doppelklicks welche Textbox das ist und schreibt dessen Name ja mit dem Inhalt der Textbox in ein Inifile
    Quasi so ..

    [TextBox54]
    Inhalt=Elsi


    so jetzt steht der Name der Textbox ja schon als "Überschrift" da drin .. und auch der Inhalt der da drin gestanden hat...
    jetzt muss es doch irgendwie ne Möglichkeit geben .. das so auszulesen, dass ich mir mit TextBox54+.text dort auch den Inhalt "Elsi" da wieder rein bekomme oder? hmm...
    Eine Möglichkeit habe ich dir doch erklärt^^
    Me.Controls mit einer Schleife durchlaufen. FÜr jedes Control prüfen ob es eine Textbox ist. Wenn ja, dann kannst du den Namen der Textbox bestimmen (Control.Name). Nun versuchst du aus der INI-Datei unter der Sektion "Control-Name" den Wert für den Schlüssel "Inhalt" auszulesen. Wenn das klappt, schreibst du den ausgelesenen Text in die aktuelle Textbox.

    Wenn du vom Unsinn wegkommen willst:
    Was machst du da? bzw Was soll es mal machen/werden?
    Warum brauchst du 125 Textboxen?!
    Bin mir zu 99% sicher, dass es da was besseres gibt.
    ähm es wird ein Einteilungsplan .. der dann ausgedruckt wird.. wo in den Textboxen Namen stehen .. und da wir viele Mitarbeiter sind .. brauchen wir auch viele Textboxen .. die in den einzelnen Bereichen eingeteilt werden..

    Das Bild hatte ich in einem anderen Thread schon mal gezeigt.. so ungefähr sieht es aus..
    da stehen links dann noch namen der Bereiche und so wie es da ist existiert es im Excel schon..

    ich habs halt nur so übernommen und es funktioniert auch soweit schon alles bis auf das einlesen..

    Die Boxen scheinen ja schon irgendwie angeordnet zu sein, also muss es ja eine Art System hinter den Boxen geben.
    Z.B. könnte es mehrere Abteilungen geben oder jede Abteilung hat einen Chef, mehrere Computerfreaks und ein paar Handwerker - kp. Momentan sehe ich da nur tausend Textboxen die nach einem bestimmten Muster angeordnet sein könnten.

    Wenn ich sowas machen wollte, würde ich höchstvermutlich anfangen mich mit dem DataSet zu beschäftigen, da hat man sehr viele vorteile, besonders das Speichern und Laden.

    Keine Ahnung was ich dir sonst noch so raten soll, du willst ja scheinbar exakt diese Form der Darstellung beibehalten (Darstellung <> Dateneingabe/Verwaltung/etc). Da hast du natürlich bei Verwendung des DataSets das Problem, dass du wunderschön Bearbeiten, Laden und Speichern kannst, das Darstellungs-Format des Screenshots aber nur schwer zu realisieren ist.
    Ich schätze mal, dass Excel dafür immernoch besser geeignet ist als das...
    @tuvok: Was hab ich Dir letztens geschrieben, als Du ebenfalls dieses Bild gepostet hast?
    Deine Herangehensweise ist Grütze.
    Allerdings könntest Du was per DataBinding machen, indem Du Dir für jede in Frage kommende TextBox ein My.Setting.TextBoxText anlegst und dieeses Setting per PropertyBinding an die TextBox bindest.
    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!
    Warum nimmst du kein DGV?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    *seufz* das schlimme an der ganzen Sache ist, dass keiner von Euch mich versteht .. und warum und wie ich das benutze..
    immer kommen dann so Aggresive Sätze usw.

    Das Forum wird teils immer unpersönlicher .. ist nur mal so eine Meinung am Rande..

    Diese Art wie ich es jetzt hier aufgebaut habe ist nicht anders als es bei uns momentan per Excel gemacht wird.
    ein DGV scheint mir als Anfänger dann auf diese Weise doch ein wenig Umfangreicher zu sein...

    Das schreiben usw. in Textboxen und gleichzeitiges abspeichern in eine INI funktioniert einwandfrei ..

    Danke für die bisherige Hilfe....


    PS: es wird verlangt das man alles kann und alles gleich versteht.. die Geduld mitzubringen das Leuten genaustens zu erklären bleibt bei einigen auf der Strecke.. da sollten sich die betroffenen Personen mal Gedanken drüber machen..
    entweder man hilft den Leuten oder man liest den Post und Antwortet einfach nicht drauf..

    tuvok schrieb:

    immer kommen dann so Aggresive Sätze usw.

    Die kommen nur weil wir deinen "Handles 5000Objekte" Source gesehen haben. Jeder normaldenkende würde sich beim Schreiben des Codes fragen "Das kann doch nicht sein, das muss doch einfacher gehen?"
    Da wäre die Antwort ... JA

    for each tb as textbox in dieform.controls.oftype(textbox)
    addhandler tb.textchanged, addressof foo
    next

    Bleibt dann aber das Problem, dass eine Oberfläche mit x hundert unstrukturiert platzierten Textboxen halt offensichtlich ebenfalls unrichtig ist.

    TIP: Immer erstmal das eigentliche Problem/Vorhaben beschreiben und DANN wie man das ggf programmtechnisch umsetzen möchte. Dann können die "wissenden" nämlich einen ggf deutlich passenderen Ansatz vorschlagen.

    VB.NET-Quellcode

    1. Dim textbox As TextBox
    2. Dim gesingar() As String = IO.File.ReadAllLines("iniFile.ini")
    3. For i = 0 To gesingar.Length - 1
    4. If (gesingar(i).Trim(" "c).StartsWith("[")) Then
    5. If TypeOf Me.Controls(gesingar(i).Trim(New Char() {" "c, "["c, "]"c})) Is TextBox Then
    6. textbox = CType(Me.Controls(gesingar(i).Trim(New Char() {" "c, "["c, "]"c})), TextBox)
    7. End If
    8. ElseIf (gesingar(i).Trim(" "c).StartsWith("Inhalt=")) Then
    9. If textbox IsNot Nothing Then textbox.Text = gesingar(i).Trim(" "c).Substring(7)
    10. ElseIf (gesingar(i).Trim(" "c).StartsWith("KW=")) Then
    11. 'Was ist KW? .....
    12. If textbox IsNot Nothing Then textbox.Text = gesingar(i).Trim(" "c).Substring(3)
    13. End If
    14. Next
    @picoflop .. es geht aber nun mal nicht anders als mit so vielen Textboxen .. Es ist nunmal das Dokument was ich so übernommen habe wo Die Leute dann aus der Combobox
    die Namen auswählen und dann mit einem Doppelklick in das entsprechende Textfeld befördern oder mit einem Doppelklick aus dem Textfeld wieder raus..
    Was ja auch schon alles wunderbar funktioniert..

    Naja.. ich schau mal wie ich das hin bekomme


    @Bluespide... danke für den Code ich werds mal ausprobieren..

    picoflop schrieb:

    for each tb as textbox in dieform.controls.oftype(textbox)
    addhandler tb.textchanged, addressof foo
    next

    #2 dies ist das was du brauchst

    Du hast über 120 Textboxen, dein Code wird bei beschissener Bennenung unübersichtlich und vor allem wenn du in Zukunft den Code erweitern willst, wirds massiv häßlich wenn du dort 130 Handler durchklicken mußt.
    Ich wette mit dir, dass es hier Leute gibt, die dein Problem wesentlich eleganter und komfortabler lösen würden, und wenns auch nur so ist, dass man es in Tabs oder Groups packt um dann wenigstens die Regionen im Code zu kennzeichnen -- dafür müßtest du aber dein eigentliches Problem mal schildern.

    Ich hab so ne Form wie du sie hier machst noch nie gesehen und kann mir einfach nicht vorstellen, für was genau die Optik wichtig sein soll, also mich würde hier mal scharf das Thema interessieren, um was es hier gehen soll.

    Edit: ok es soll nen Einteilungsplan werden -> Stunden - Tagetechnisch?
    Dein großes Problem wird hier irgendwann die Erweiterung sein oder, wenn du auf kurz oder lang Berechnungen machen willst.

    Besser ist hier die Form:

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