vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Multiline Textbox 
Autor: BasicOpa
Datum: 20.06.19 15:19

Hallo zusammen,

2 Fragen hierzu:

1. Wie lassen sich leere Zeilen anlegen? (Index out of Range vermeiden)

2. Ich möchte einzelne Zeilen und innerhalb derer Positionen und Längen bestimmen um Daten zu entnehmen und/oder zu ersetzen. Wie ist das am einfachsten zu machen? Laienhaft stelle ich es mir ideal so vor: TextBox1.Lines(4, 25, 6) = "blabla".

Kann mir jemand helfen?
Viele Grüße
BasicOpa
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Multiline Textbox 
Autor: Manfred X
Datum: 20.06.19 16:57

Hallo!

Die Textbox ist eigentlich nicht für zeilenbezogen strukturierte Textdaten konzipiert
(Textumbruch).
Wenn Du solche Daten verarbeiten willst, solltest Du vielleicht an eine Datatable und ein
Datagrid denken. Dort hast Du eine Liste (Rows) einzelner Textabschnitte zur Verfügung.

Erkläre etwas genauer, was Du erreichen möchtest.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Multiline Textbox 
Autor: BasicOpa
Datum: 20.06.19 17:59

Hallo Manfred,

erstmal danke für die Antwort.

Ich benötige zur Steuerung eines meiner Anwendungsprogramme spezielle Skripte, deren Sprache eine eigene Entwicklung ist. (Beispiel: Start=S5,Ziel=X0009,Bed=false,Sonst="BlaBa"). Diese Skripte können mehrere Seiten mit vielen Zeilen groß werden. Zur Erstellung der Skripte soll ein eigens dafür entwickelter Editor dienen. Als Basis will ich dafür eine Multiline-TextBox verwenden.

Viele Grüße
BasicOpa
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Multiline Textbox 
Autor: Manfred X
Datum: 20.06.19 20:26

Ich weiß noch zu wenig, um Deine Vorgehensweise einordnen zu können.
Ich vermute, ein RichTextBox-Control könnte eingesetzt werden, um
einzelne Abschnitte zu markieren und zu ersetzen/editieren.

In einer Textbox kannst Du in den Text Steuerzeichen eintragen,
die als Zeilenumbruch (vbNewLine) interpretiert werden. Damit erhälst
Du eine neue leere Zeile.

Beitrag wurde zuletzt am 20.06.19 um 20:47:57 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Multiline Textbox 
Autor: BasicOpa
Datum: 21.06.19 15:09

Hallo Manfred,

die RichTextBox bietet viel mehr als die "normale" Multiline TextBox. Dafür ist sie aber viel komplizierter in der Anwendung und all dieses Komfort den sie bietet brauche ich nicht.

Was ich brauche ist ein einfacher, zeilenorientierter Textbereich. Innerhalb dieses Bereiches möchte ich Zeilen anlegen, löschen und innerhalb des gesamten Bereichs navigieren. Darüber hinaus innerhalb navigierter Zeilen bestimmte Positionen ansprechen und Inhalte mit vorgegebener Länge austauschen.

Stell Dir bitte den Editor in VB vor. So ähnlich, aber viel weniger anspruchsvoll soll mein Editor funktionieren.

Viele Grüße
BasicOpa
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Multiline Textbox 
Autor: Manfred X
Datum: 21.06.19 18:43

Die Textbox enthält einen Text und kein Zeilenarray. Die Lines-Eigenschaft
liefert nur eine schreibgeschützte Zerlegung des Textes in Zeilen,
anhand der Textbox-Parameter und der harten Zeilenumbrüche.

Sind die Text-"Zeilen" durch harte Umbrüche getrennt?
Zeilen sind keine fixen Datenstrukturen. Wie willst Du dort navigieren?
Willst Du in der Textbox im Dialog einen Textabschnitt markieren und austauschen?
Das geht mit den Selection-Methoden der TextBox. Angaben zur Zeile benötigst
Du nicht. Diese Methoden liefern Dir direkt die Position im Text. Den markierten Abschnitt
kannst Du per Code löschen oder ersetzen
Das Einfügen von Zeilenumbrüchen funktioniert per ENTER-Taste in der Box.

Was verstehst Du unter "Positionen" ansprechen? Willst Du per Code Textabschnitte suchen?
Das geht mit der IndexOf-Methode des Textstrings.

Ein Ersetzbeispiel (txt sei eine Textbox)
 txt.Text = "aaaa" & vbCrLf & "bbbb"
 
 Dim pos As Integer = txt.Text.IndexOf("bb", 0)
 
 txt.SelectionStart = pos
 txt.SelectionLength = 2
 txt.SelectedText = "dd"
Ich habe den Eindruck, das Denken in Zeilen verwirrt Dich. Betrachte den Inhalt der
Box als fortlaufende Zeichenfolge - eventuell mit Umbrüchen.

(Der VB-Editor arbeitet übrigens auch nicht mehr zeilenorientiert, sondern verwendet
fast ausschließlich automatische Zeilen"fortsetzungen" innerhalb der einzelnen Anweisung.)

Ist Dein Datenmaterial in feste Abschnitte strukturiert, kann ich nur noch einmal auf
eine Datatable mit einer Integerspalte (Numerierung) und einer Stringsspalte hinweisen,
die an ein DataGridView-Control gebunden werden kann.
Dann hast Du eine definierte Liste von Zeilen zur Verfügung, in der Zeilen eingefügt und
gelöscht werden können. Das Navigieren im Grid ist problemlos möglich.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Multiline Textbox 
Autor: sv00010
Datum: 21.06.19 21:53

BasicOpa schrieb:
Zitat:


2. Ich möchte einzelne Zeilen und innerhalb derer Positionen
und Längen bestimmen um Daten zu entnehmen und/oder zu
ersetzen.

Um herauszufinden, wieviele Zeichen in einer Zeile vorhanden sind, kannst du die Windows API verwenden.

https://www.vbarchiv.net/tipps/tipp_648-bestimmte-zeile-einer-multiline-textbox-auslesen.html

https://www.enzinger.net/MultiLn.html

http://vbnet.mvps.org/index.html?code/textapi/txapiselect.htm

Sollte das nicht reichen, einfach den Namen der API-Funktionen in eine Suchmaschine eingeben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Multiline Textbox 
Autor: Manfred X
Datum: 21.06.19 23:12

Hallo!

Bitte keine veralteten VB6-Links posten.
Das Net-Control ist ergänzt um geeignete Methoden.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Multiline Textbox 
Autor: BasicOpa
Datum: 24.06.19 12:24

Hallo Manfred,

vielen Dank für die ausführliche Erklärung, die mich gewiss entscheidend weiter bringt. Ich habe begriffen, dass es sich bei der Textbox nicht um ein Zeilenarray handelt. Dieser Irrtum war wohl der entscheidende Grund für mein Problem.

Mein neuer Ansatz ist dem entsprechend der, dass ich die TextBox im Prinzip nur zur einfachen Eingabe von Text-"Zeilen" mit anschließendem Zeilenumbruch, sowie zur reinen Anzeige des Textes verwende. Und alle positionsbezogenen Änderungen und/oder Ergänzungen in einem parallel geführten Daten-Array durchführe.

Viele Grüße
BasicOpa
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel