none
Wie kann ich eine einzelne Zeile aus einer Richtexttbox löschen? RRS feed

  • Frage

  • Hi,

    Ich habe eine Richtextbox mit mehreren Zeilen. Möchte per Buttonclick die erste Zeile löschen

    Habe auch schon gegoogelt aber finde nur Lösungen mit VB oder C#. Ich übersetze mir oft meinen Code aus C# aber irgendwie stehe ich dieses mal auf dem Schlauch...

    Danke für die Hilfe

    Grüße

    Dienstag, 6. März 2018 14:29

Antworten

  • Habe es schon selbst gelöst.

    • lege ein leeres array an
    • lese mir die zeilen in die $lines ein
    • setzte $i in der schleife auf 1 um die erste Zeile (0) zu überspringen
    • schreibe pro durchlauf die Zeilen in das vordefinierte leere array
    • weise der rtb das neue array zu
        $newlines = @()
        $lines = $richtextBox1.Lines;
        for($i = 1; $i -lt $lines.count; $i++)
            {
                $newlines += $lines[$i]
            }
        $richtextBox1.Lines = $newLines

    Grüße

    • Als Antwort markiert MCMaggi Mittwoch, 7. März 2018 11:27
    Mittwoch, 7. März 2018 10:25

Alle Antworten

  • Welcher Teil ist denn das Problem? Deine Aufgabe besteht aus 3 Teilschritten:

    Text aus Richtextbox auslesen

    Text verändern

    Text in Richtextbox schreiben

    Mittwoch, 7. März 2018 07:06
  • Den Text verändern.

    Also einfach eine Zeile löschen

    $Richtextbox.lines.remove("Zeile1")

    Mittwoch, 7. März 2018 07:55
  • Versuch mal

    $RichTextBox.text = $RichTextBox.text -replace ("Zeile1")

    Die Lines-Eigenschaft scheint per default readonly zu sein. 

    Mittwoch, 7. März 2018 08:58
  • Ja das entfernt die Zeile, danke!

    Allerdings habe ich logischerweise eine "leere" Zeile anstatt der "Zeile1"...

    Grüße

    Mittwoch, 7. März 2018 09:22
  • Habe es schon selbst gelöst.

    • lege ein leeres array an
    • lese mir die zeilen in die $lines ein
    • setzte $i in der schleife auf 1 um die erste Zeile (0) zu überspringen
    • schreibe pro durchlauf die Zeilen in das vordefinierte leere array
    • weise der rtb das neue array zu
        $newlines = @()
        $lines = $richtextBox1.Lines;
        for($i = 1; $i -lt $lines.count; $i++)
            {
                $newlines += $lines[$i]
            }
        $richtextBox1.Lines = $newLines

    Grüße

    • Als Antwort markiert MCMaggi Mittwoch, 7. März 2018 11:27
    Mittwoch, 7. März 2018 10:25
  • Habe es schon selbst gelöst.

    • lege ein leeres array an
    • lese mir die zeilen in die $lines ein
    • setzte $i in der schleife auf 1 um die erste Zeile (0) zu überspringen
    • schreibe pro durchlauf die Zeilen in das vordefinierte leere array
    • weise der rtb das neue array zu
        $newlines = @()
        $lines = $richtextBox1.Lines;
        for($i = 1; $i -lt $lines.count; $i++)
            {
                $newlines += $lines[$i]
            }
        $richtextBox1.Lines = $newLines

    Grüße

    Hi McMaggi,

    danke für deine Antwort! :) baue ich das jetzt einfach zu meinem Befehl mit ein? Sorry, ich bin absoluter Neuling in Sachen PowerShell, ich weiß nicht, wie ich das wo integriere... habe bisher nur die eine Zeile... ^^

    LG

    Mittwoch, 7. März 2018 10:42
  • Hi,

    Hier eine richtextbox und ein Button (geht genau so mit einer normalen multiline textbox):

    function Start {
    [reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
    [reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
    $form1 = New-Object System.Windows.Forms.Form
    $button1 = New-Object System.Windows.Forms.Button
    $richTextBox1 = New-Object System.Windows.Forms.RichTextBox
    $InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
    
    
    
    #Hier fügst du den Code ein der ausgeführt werden soll wenn button1 geklickt wird
    $button1_OnClick= 
    {
        $newlines = @()
        $lines = $richtextbox1.Lines;
        for($i = 1; $i -lt $lines.count; $i++)
            {
                $newlines += $lines[$i]
            }
        $richtextbox1.Lines = $newLines
    }
    
    
    
    $OnLoadForm_StateCorrection=
    {
    	$form1.WindowState = $InitialFormWindowState
    }
    
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height = 450
    $System_Drawing_Size.Width = 550
    $form1.ClientSize = $System_Drawing_Size
    $form1.DataBindings.DefaultDataSourceUpdateMode = 0
    $form1.Name = "form1"
    
    
    $button1.DataBindings.DefaultDataSourceUpdateMode = 0
    
    $System_Drawing_Point = New-Object System.Drawing.Point
    $System_Drawing_Point.X = 81
    $System_Drawing_Point.Y = 339
    $button1.Location = $System_Drawing_Point
    $button1.Name = "button1"
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height = 23
    $System_Drawing_Size.Width = 75
    $button1.Size = $System_Drawing_Size
    $button1.TabIndex = 1
    $button1.Text = "button1"
    $button1.UseVisualStyleBackColor = $True
    $button1.add_Click($button1_OnClick)
    
    $form1.Controls.Add($button1)
    
    $richTextBox1.DataBindings.DefaultDataSourceUpdateMode = 0
    $System_Drawing_Point = New-Object System.Drawing.Point
    $System_Drawing_Point.X = 29
    $System_Drawing_Point.Y = 52
    $richTextBox1.Location = $System_Drawing_Point
    $richTextBox1.Name = "richTextBox1"
    $System_Drawing_Size = New-Object System.Drawing.Size
    $System_Drawing_Size.Height = 249
    $System_Drawing_Size.Width = 367
    $richTextBox1.Size = $System_Drawing_Size
    $richTextBox1.TabIndex = 0
    $richTextBox1.Text = ""
    
    $form1.Controls.Add($richTextBox1)
    
    $InitialFormWindowState = $form1.WindowState
    $form1.add_Load($OnLoadForm_StateCorrection)
    $form1.ShowDialog()| Out-Null
    
    } 
    Start

    Du musst lediglich $richtextbox1 durch deine Variable ersetzten z.B. $Textbox etc.

    Grüße



    • Bearbeitet MCMaggi Mittwoch, 7. März 2018 11:25
    Mittwoch, 7. März 2018 11:24
  • Dann nimm doch

    $richtextbox.lines = $richtextbox.lines | where{$_ -ne "Zeile1"}

    Mittwoch, 7. März 2018 13:25