Entwickler-Ecke

WinForms - Zeile aus TextBox löschen


MiChri - Di 27.09.05 17:20
Titel: Zeile aus TextBox löschen
Hallo
Ich suche eine möglichkeit aus einer (Multiline) TextBox eine Zeile (per Index) zu löschen. Mir ist klar, dass ich mich "\r\n" zählend durch den String hangeln kann, aber geht das nicht bequemer und schneller, wie bei Delphi über die Lines Propertie?

Vielen Dank schonmal
Gruß
Christian


Christian S. - Di 27.09.05 17:30

Hallo!

Du kannst mittels der Eigenschaft Lines auf die einzelnen Zeilen zugreifen.

Grüße
Christian


MiChri - Di 27.09.05 17:36

Danke erstmal
Aber... wie kann ich darüber eine Zeile löschen??? (noch nicht einmal das ändern funktioniert einwandfrei)


Christian S. - Di 27.09.05 17:44

user profile iconMiChri hat folgendes geschrieben:
wie kann ich darüber eine Zeile löschen???
Die Eigenschaft lines ist ein einfaches String[]-Array. In dem Hilfetext zur Eigenschaft gibt es ein Beispiel, wie man damit arbeitet. Sieht in Delphi so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  tmpArr : Array of String;
  i: Integer;
begin
  tmpArr := textbox1.lines; //holen

  //Löschen (oder was anderes, wenn man will)
  for i:=1 to High(tmpArr) do
    tmpArr[i-1] := tmpArr[i];
  SetLength(tmpArr, Length(tmpArr)-1);

  textbox1.Lines := tmpArr;//und zurück
end;


Damit sollte auch das Ändern von Einträgen problemlos gehen. Etwas umständlich, aber laut Hilfe stimmt das so. :gruebel:

Grüße
Christian


MiChri - Di 27.09.05 17:56

Mhhhmmm :roll:
Scheint ja furchtbar komfortabel zu sein... Da ich mit VC# programmiere hatte ich deinen Hilfstext nicht und hatte auf etwas eleganteres gehofft.
Ausserdem kam bei mir folgendes lustiges zustande:

C#-Quelltext
1:
2:
  m_Text.Lines[lineNumber]="ASimpleString";
  bool test=(m_Text.Lines[lineNumber]=="ASimpleString");

Na rate mal welchen Wert test danach hatte... ja natürlich false

Gruß Christian


Christian S. - Di 27.09.05 17:59

user profile iconMiChri hat folgendes geschrieben:
Da ich mit VC# programmiere hatte ich deinen Hilfstext nicht und hatte auf etwas eleganteres gehofft.
Die Hilfe ist beim .NET Framework SDK dabei, solltest Du also auch haben.

user profile iconMiChri hat folgendes geschrieben:
Ausserdem kam bei mir folgendes lustiges zustande:

C#-Quelltext
1:
2:
  m_Text.Lines[lineNumber]="ASimpleString";
  bool test=(m_Text.Lines[lineNumber]=="ASimpleString");
Geht jetzt aber, wenn Du Dir die lines in ein Array holst, oder?

Und dass das nicht sehr komfortabel ist, da muss ich Dir Recht geben.


MiChri - Di 27.09.05 18:36

user profile iconChristian S. hat folgendes geschrieben:

Die Hilfe ist beim .NET Framework SDK dabei, solltest Du also auch haben.

Leider nicht. Die hilfe zur Line Propertie sieht bei mir so aus:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public void ViewMyTextBoxContents()
 {
    // Create a string array and store the contents of the Lines property.
    string[] tempArray = new string [textBox1.Lines.Length];
    tempArray = textBox1.Lines;
 
    // Loop through the array and send the contents of the array to debug window.
    for(int counter=0; counter <= tempArray.Length;counter++)
    {
       System.Diagnostics.Debug.WriteLine(tempArray[counter]);
    }
 }

user profile iconChristian S. hat folgendes geschrieben:

Geht jetzt aber, wenn Du Dir die lines in ein Array holst, oder?

Wie meinst du das jetzt genau? Auf einer Kopie arbeiten? Das habe ich noch nicht probiert.

Ich habe jetzt einen StringReader mit dem Text der TextBox gefüttert und alles in einen Zweiten String gepackt.
Das kommt dem "Parser Charakter" meiner Funktion sowieso näher.

Danke nochmal für die Mühe und einen Schönen Feierabend :D
Gruß
Christian


Christian S. - Di 27.09.05 18:39

Den Hilfetext meine ich. Der Rest war ja dann ansich nur noch ein kleiner Schritt. Zumindest das Löschen mittels des tempArrays geht bei mir. Das Ändern habe ich nicht ausprobiert, weil das Löschen ja das Ändern beinhaltet.