[VB .net 2003] Wie in Textbox Text an bestimmter Stelle einfügen?

Lehne

Grünschnabel
Als Neueinsteiger In VB .net habe ich folgendes Problem:
Beim Starten meines Programmes wird in einer Textbox der folgende Text generiert, der später für Registrierungseinträge weiterverwendet werden soll.

[Elemente\000]


[Elemente\000\IOBits]


[Elemente\000\Zeiten]


[Elemente\001]


[Elemente\001\IOBits]


[Elemente\001\Zeiten]


[Elemente\002]

usw.

Das Schema des Textes ist also:

Überschrift
Leerzeile 1
Leerzeile 2

Wie kann ich in der Textbox entsprechende Einträge (durch Auswahl von Radiobuttons) in 'Leerzeile 1' nach der Überschrift machen?

Für Hilfe und Anregungen wäre ich sehr dankbar.
 
Ich würde dir empfehlen anhand von deinen Optionen (Radiobuttons etc.) einen kompletten String zu generieren welchen du in die Textbox schreibst. Solche Textmanipulationen sind umständlich und fehleranfällig.
 
Vielen Dank für die Antwort, die nun schon einige Zeit zurückliegt. Für meine späte Reaktion bitte ich um Entschuldigung, dienstliche Zwänge mussten mein Projekt ruhen lassen.
Leider führt mich diese Lösung nicht zum benötigten Ergebnis. Ich bin darauf angewiesen, in eine bestimmte Zeile nach der "Überschrift" zu springen, was ich mit meinen Kenntnissen nicht schaffe.

Würde mich über weitere Hilfe sehr freuen.
 
Also eventuell würde ich eine "Dictionary(Of String, List(Of String))" hernehmen... vielleicht gehts auch einfacher, aber zumindest sollte man damit arbeiten können.

Code:
        Dim Inhalt As New Dictionary(Of String, List(Of String))

        Inhalt.Add("Oberpunkt1", New List(Of String))
        Inhalt.Item("Oberpunkt1").Add("Eintrag1")
        Inhalt.Item("Oberpunkt1").Add("Eintrag1")

        Inhalt.Add("Oberpunkt2", New List(Of String))
        Inhalt.Item("Oberpunkt2").Add("Eintrag2")
        Inhalt.Item("Oberpunkt2").Add("Eintrag3")

        Dim sb As New System.Text.StringBuilder()

        For Each oberpunkt In Inhalt
            sb.AppendLine(oberpunkt.Key)
            For Each eintrag In oberpunkt.Value
                sb.AppendLine(eintrag)
            Next
        Next

        TextBox1.Text = sb.ToString()

Die Ausgabe sieht jetzt folgendermaßen aus:

Oberpunkt1
Eintrag1
Eintrag1
Oberpunkt2
Eintrag2
Eintrag3

Jetzt musst du nur noch ein paar Leerzeilen einbauen, und die eckigen Klammern, und schon funktionierts.
 
Leider führt mich diese Lösung nicht zum benötigten Ergebnis. Ich bin darauf angewiesen, in eine bestimmte Zeile nach der "Überschrift" zu springen, was ich mit meinen Kenntnissen nicht schaffe.
Könntest du das "springen" näher erläutern.
Ich habs immer wieder gelesen verstehe aber nicht wirklich worauf du hinaus willst.
 
Zitat von Spyke:
Könntest du das "springen" näher erläutern.

Hallo Spyke,
vielen Dank, dass du dir Zeit für mein Problem nimmst. Ich hoffe, dass ich mein Anliegen hiermit verständlicher erläutere:
Das fertige Programm soll ein Editor werden, mit dem Registry-Daten generiert werden können.
Beim Start des Programms werden ein Rasterfeld mit 5 Zeilen und 26 Spalten (130 Felder) und eine Textbox erzeugt. Der Inhalt der Textbox wird nach dem Programmstart wie folgt dargestellt:

[HKEY_CURRENT_USER\Software\...\Elemente\000]

[HKEY_CURRENT_USER\Software\...\Elemente\000\IOBits]

[HKEY_CURRENT_USER\Software\...\Elemente\000\Zeiten]

[HKEY_CURRENT_USER\Software\...\Elemente\001]

[HKEY_CURRENT_USER\Software\...\Elemente\001\IOBits]

[HKEY_CURRENT_USER\Software\...\Elemente\001\Zeiten]

[HKEY_CURRENT_USER\Software\...\Elemente\002]

[HKEY_CURRENT_USER\Software\...\Elemente\002\IOBits]

[HKEY_CURRENT_USER\Software\...\Elemente\002\Zeiten]

usw.

Jedes dieser o. g. Felder repräsentiert ein Element, für das noch "IOBits" und "Zeiten" definiert werden können.
Jedem Feld/Element kann eine Funktionalität A, B, C oder D zugewiesen werden. Dazu wird als erstes die gewünschte Funktionalität (z. B. "A") ausgewählt, was zum Öffnen eines entsprechenden Auswahldialogfensters führt. In diesem Fenster muss eingetragen werden, welches Rasterfeld die Funktionalität "A" erhalten soll (z. B. Feld 002), womit die Koordinaten ("X" und "Y") der Funktionalität "A" festgelegt werden. Mit Radiobuttons können weitere Eigenschaften gewählt werden, die in der Registry mit "Typ_1", "Typ_2", "Typ_3" und "Bedienbar" bezeichnet sind. Weiterhin werden verschiedene Ein- und Ausgabebits (IOBits) festgelegt und die Länge der Kommandozeiten.

Im Registry-Eintrag sieht das dann in etwa so aus:

[HKEY_CURRENT_USER\Software\...\Elemente\002]
"X"=dword:0000001a
"Y"=dword:00000001
"Funktionalitaet"="A"
"Typ_1"="G_W_"
"Typ_2"=""
"Typ_3"="B_R_EIN_"
"Bedienbar"=dword:00000001

[HKEY_CURRENT_USER\Software\...\Elemente\002\IOBits]
"R"=dword:00000074
"S"=dword:0000007c
"T"=dword:00000051
"U"=dword:00000059

[HKEY_CURRENT_USER\Software\...\Elemente\002\Zeiten]
"V"=dword:00000004


Und jetzt zu meinem Problem: :confused:
Ich habe es bisher nicht geschafft, dass nach der Auswahl mit den Radiobuttons im Auswahldialogfenster die Registry-Werte, z. B.
"X"=dword:0000001a
"Y"=dword:00000001
"Funktionalitaet"="A"
"Typ_1"="G_W_"
"Typ_2"=""
"Typ_3"="B_R_EIN_"
"Bedienbar"=dword:00000001
an die richtige Stelle in der Textbox geschrieben werden - im Beispiel also unter die Zeile "[HKEY_CURRENT_USER\Software\...\Elemente\002]". Das hatte ich mit "springen" zu einer bestimmten Zeile in der Textbox gemeint.
Ich hoffe, das trägt zum besseren Verständnis meines Problems bei.
 
Zitat von engelmarkus:
Also eventuell würde ich eine "Dictionary(Of String, List(Of String))" hernehmen... vielleicht gehts auch einfacher, aber zumindest sollte man damit arbeiten können.

Hallo engelmarkus,

danke für deine Hinweise und Mühe. Ich werde es ausprobieren, brauche aber noch ein bisschen Zeit, um das bei mir zu implementieren.
Ich hoffe, ich habe mich als Anfänger mit meinem Programm nicht übernommen.
 
Zurück