2016-12-07 7 views
0

In meinem Skript habe ich ein Textfeld - der Benutzer fügt Text in es und ich möchte den Text in einer Datei (die das Skript erstellt früher) zu dem, was der Benutzer in der eingefügt Textfeld.Ersetze Text mit einem Textfeld Eingabe mit Variable

Das Problem: es löscht den Teil wollte ich in der Datei geändert werden - aber es nicht den Text des Benutzers statt schreiben. Ich habe auch versucht, die Variable in der if-Schleife zu finden - und es hat den Text wie gewünscht geändert, aber als ich das Skript erneut ausgeführt habe, hat es den alten Text in das deaktivierte Textfeld geschrieben.

mein Skript ist ein bisschen lang, also werde ich nicht alles veröffentlichen, aber hier sind die wichtigen Teile. Danke für die Hilfe!

#This creates a checkbox called dsp.z 
$objDspCheckbox = New-Object System.Windows.Forms.Checkbox 
$objDspCheckbox.Location = New-Object System.Drawing.Size(20,40) 
$objDspCheckbox.Size = New-Object System.Drawing.Size(150,20) 
$objDspCheckbox.Text = "dsp.z" 
$objDspCheckbox.TabIndex = 0 
$objForm.Controls.Add($objDspCheckbox) 

#This creates the TextBox1 and put it on disable 
$objTextBox1 = New-Object System.Windows.Forms.TextBox 
$objTextBox1.Location = New-Object System.Drawing.Size(450,40) 
$objTextBox1.Size = New-Object System.Drawing.Size(140,150) 
$objTextBox1.TabIndex = 3 
$objTextBox1.text = $text1 
$objTextBox1.Enabled = $false 
$objForm.Controls.Add($objTextBox1) 

#This creates a checkbox for textbox1 
$objDsp2Checkbox = New-Object System.Windows.Forms.Checkbox 
$objDsp2Checkbox.Location = New-Object System.Drawing.Size(430,40) 
$objDsp2Checkbox.Size = New-Object System.Drawing.Size(150,20) 
$objDsp2Checkbox.TabIndex = 0 
$objForm.Controls.Add($objDsp2Checkbox) 

#Enables the textbox when user check the box: 
#textbox1 
$objDsp2Checkbox_OnClick = { 
if ($objDsp2Checkbox.Checked -eq $true) 
{ 
    $objTextBox1.Enabled = $true 
} 
elseif ($objDsp2Checkbox.Checked -eq $false) 
{ 
    $objTextBox1.Enabled = $false 
} 
} 
$objDsp2Checkbox.Add_Click($objDsp2Checkbox_OnClick) 

#variables 
$text1=$objTextBox1.Text 

#This creates the ok and cancle buttons: 
#ok Button 
$OKButton = New-Object System.Windows.Forms.Button 
$OKButton.Location = New-Object System.Drawing.Size(220,155) 
$OKButton.Size = New-Object System.Drawing.Size(75,23) 
$OKButton.Text = "OK" 
$OKButton.Add_Click(
{ 
if (($objDspCheckbox.Checked -eq $true) -and ($objDsp2Checkbox.Checked -eq $true)) 
{ 
    New-Item $path -itemtype file -name Dsp.json -value "old" ;((Get-Content "c:\users\$env:USERNAME\documents\Json\dsp.json") -replace 'old', $text1 | out-file "c:\users\$env:USERNAME\documents\Json\dsp.json") ;$objForm.close() 
} 

Antwort

1

Versuchen Sie, diese Linie zu ändern (specifly die $text1) zu $objTextBox1.Text:

New-Item $path -itemtype file -name Dsp.json -value "old" ; 
((Get-Content "c:\users\$env:USERNAME\documents\Json\dsp.json") -replace 'old', $text1 | 
Out-file "c:\users\$env:USERNAME\documents\Json\dsp.json") ;$objForm.close() 

An:

New-Item $path -itemtype file -name Dsp.json -value "old" ; 
((Get-Content "c:\users\$env:USERNAME\documents\Json\dsp.json") -replace 'old', $objTextBox1.Text | 
Out-file "c:\users\$env:USERNAME\documents\Json\dsp.json") ;$objForm.close() 

Ich bin nicht sicher, ob es der Fall ist, aber wenn Sie gerade brauchen Um den Text in der Textdatei zu speichern gibt es einen einfacheren Ansatz:

$objTextBox1.Text | Out-file "c:\users\$env:USERNAME\documents\Json\dsp.json") 
+0

Großartig! das ist, was ich wollte, ich habe eine Datei mit Parametern gebaut und ich wollte, dass sie geändert werden, was der Benutzer schreibt. Danke! – ofribouba

+0

aber wissen Sie, warum es nicht so funktionierte wie ich es versuchte? weil ich $ text1 = $ textbox1.text so definiert habe, sollte es das gleiche nein sein? – ofribouba

+0

'$ text1 = $ textbox1.text' ist eine einmalige Operation, die den Wert von' $ textbox.text' in die Variable kopiert - sie wird nicht verlinkt. –