Laden...

TextBox MultiLine Probleme

Erstellt von schmalhans vor 18 Jahren Letzter Beitrag vor 18 Jahren 4.899 Views
S
schmalhans Themenstarter:in
44 Beiträge seit 2005
vor 18 Jahren
TextBox MultiLine Probleme

Hallo ihr,

ich bin neu hier, entwickle aber schon eine ganze Zeit in C++/C# und sonstigen.

Ich habe hier ein leider wohl sehr triviales Problem an dem ich nicht vorbei komme.

Folgendes:

Ich muss Files auslesen und diese in eine TextBox.MultiLine einfügen.

Nun mein Problem. Ich habe es mit

TextBox.Lines.setValue("String",Zeilenindex);

probiert. Macht er aber nicht. Auch habe ich

TextBox.AppendText("String");

probiert. Er springt mir jedesmal da in den Catch-Block.

Da ich das erste Mal mit eine TextBox.MultiLine arbeite bitte ich euch um Hilfe.

Wir schreibe ich da richtig rein und lese den Inhalt wieder aus?

Danke
schmalhans

C
97 Beiträge seit 2005
vor 18 Jahren

TextBox ist die Klasse, nicht das instanzierte Objekt.

TextBox nameDerTextBox = new TextBox();

nameDerTextBox.Lines.setValue("String",Zeilenindex);
nameDerTextBox.AppendText("String");

.. müsste eigentlich gehen. Zumindest AppendText(), Lines habe ich bisher noch nie benutzt.

Etwas nicht tun zu können, ist kein Grund etwas nicht zu tun.
-Alf

-
885 Beiträge seit 2004
vor 18 Jahren

// da war jemand schneller g

S
schmalhans Themenstarter:in
44 Beiträge seit 2005
vor 18 Jahren

Ich weiß dass TextBox die Klasse und nicht die Instanz ist. Habe das nur aus Verständnisgründen so aufgeführt. Das mit Lines.setValue funktioniert leider nicht.

Ich gehe doch recht in der Annahme, dass Index 0 die erste Zeile ist, 1 die 2. usw?
So wie sonst auch immer.

N
4.644 Beiträge seit 2004
vor 18 Jahren

Original von schmalhans
Er springt mir jedesmal da in den Catch-Block.

Wann werden wohl die Fehlermeldungen mal mitgepostet?

S
schmalhans Themenstarter:in
44 Beiträge seit 2005
vor 18 Jahren

Es gibt hier ja keine Fehlermeldung, da er im try-Block nur das Lines.setValue steht. Und sobald dies nicht funktioniert gehts ab in den catch-Block.

N
4.644 Beiträge seit 2004
vor 18 Jahren

Ein catch Block deutet meist auf eine Exception hin. Eine Exception deutet meist auf eine Fehlermeldung ( Message ) hin.

S
schmalhans Themenstarter:in
44 Beiträge seit 2005
vor 18 Jahren

Hoppla,

entschuldigung war eine dumme Frage. Hab grad nicht gedacht.
Exception wirft folgendes zurück:

"Der Indexbereich war außerhalb des Arraybereichs"

Wobei hier jetzt mein Index "0" war.

Wie kann das sein?

N
4.644 Beiträge seit 2004
vor 18 Jahren
catch (Exception ex)
{
    string message = ex.Message;
}
S
schmalhans Themenstarter:in
44 Beiträge seit 2005
vor 18 Jahren

Hoppla,

entschuldigung war eine dumme Frage. Hab grad nicht gedacht.
Exception wirft folgendes zurück:

"Der Indexbereich war außerhalb des Arraybereichs"

Wobei hier jetzt mein Index "0" war.

Wie kann das sein?

379 Beiträge seit 2004
vor 18 Jahren

Mach es doch einfach mal so:
du liest einfach deine Daten aus und schreibst diese nacheinander in die Textbox.

also so:


// Schleife (foreach oder so, mit denen du deine Daten durchläufst).
foreach(string file in ...)
{
     this.tbx.Append(file + Environment.NewLine);
}

Das sollte dann so funktionieren...

ciao Anke

S
schmalhans Themenstarter:in
44 Beiträge seit 2005
vor 18 Jahren

habe das ganze jetzt so gelöst.

textBox1.Text = textBox1.Text+ "string" + Environment.NewLine;

Danke für die Hilfen.

Nun habe ich aber ein weiteres Problem.
Und zwar stehen in der Datei Umlaute(ä,ö,ü)

Ich lese die Datei mit einen StreamReader aus und benutze hier die Funktion .ReadLine.

Diese liest aber die Umlaute nicht.

In der Datei steht zb:

"Türe"

Ausgabe des StreamReaders

"Tre"

Woran liegt das?

379 Beiträge seit 2004
vor 18 Jahren

Dazu mußt du Encoding verwenden 😉

public StreamReader(string, Encoding);

Initialisiert eine neue Instanz der StreamReader-Klasse für den angegebenen Stream mit der angegebenen Zeichencodierung und der Option für die Erkennung der Markierung für die Bytereihenfolge.

S
schmalhans Themenstarter:in
44 Beiträge seit 2005
vor 18 Jahren

Ok.... Danke für die Hilfe.
Aber ich steh glaub ich aufn Schlauch.
Bei mir siehts im Moment so aus:


StreamReader datei;
datei = File.OpenText(strPfad);
strTest = datei.ReadLine();

Wo müsste ich da das Encoding einbauen. Ich weiß, dass ein Forum keine Source-Generierungsmaschine ist, aber könnte ich trotzdem bitte ein Code-Beispiel haben. Wäre sehr freundlich. Da ich langsam verzweifel. Danke.

-
885 Beiträge seit 2004
vor 18 Jahren

Wie hurricane bereits schrieb: In den StreamReader.

Mach einfach

StreamReader datei = new StreamReader(....
563 Beiträge seit 2004
vor 18 Jahren

warum brauchst du dieses setValue?

mach doch einfach TextBox.AppendText("neuer text"); oder TextBox.Text = text;

S
schmalhans Themenstarter:in
44 Beiträge seit 2005
vor 18 Jahren

danke für die tipps.

habe jetzt den streamreader umgestellt und sehe als 2. Argument/Parameter
"System.Text.Encoding.*"
Hier sind ein paar Encoding angegeben. Diese habe ich jetzt durchgetestet und die Umlaute verschwinden immer noch.

Muss ich auf noch was achten?

Ich hoffe ihr habt noch die Geduld mit mir. Danke.

@unreal: dieses problem ist schon gelöst. trotzdem danke.

379 Beiträge seit 2004
vor 18 Jahren

Genau das gleich hatte ich auch letztens, echt blöd das ganze...

hiermit umgesht du das:

System.Text.Encoding.GetEncoding("ISO-8859-1")
S
schmalhans Themenstarter:in
44 Beiträge seit 2005
vor 18 Jahren

Recht herzlichen Dank hurricane und allen die sich beteiligt haben!

mit "System.Text.Encoding.GetEncoding("ISO-8859-1")" hat es wirklich funktioniert.
Finde es nur etwas komisch, dass man einen externen Encoder erzeugen muss. Das könnt MS mal implementieren.

Nochmals danke. Jetzt kann ich wenigstens in Ruhe schlafen 😉

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo schmalhans,

Ich weiß, dass ein Forum keine Source-Generierungsmaschine ist

aber das Forum hat eine Source-Suchmaschine http://www.mycsharp.de/wbb2/search.php

Einfach mal Encoding eingegeben, und du hättest dir und uns vermutlich die Nachfragen sparen können.

herbivore