2016-12-07 165 views
0

在我的腳本中,我有一個文本框 - 用戶在其中插入文本,並且比我想要更改文件中的文本(腳本創建的更早)文本框。使用變量替換帶有文本框輸入的文本

問題:它刪除了我想在文件中更改的部分 - 但它不會寫入用戶的文本。我也嘗試在if循環中找到變量 - 它確實改變了我想要的文本,但是當我再次運行腳本時,它在禁用的文本框中寫入了舊文本。

我的腳本有點長,所以我不會發布所有的,但這裏是重要的部分。謝謝您的幫助!

#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() 
} 

回答

1

嘗試改變這一行(specifly的$text1)到$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() 

要:

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() 

我不知道,如果是這種情況,但如果你只需要將文本框文本保存爲文件有一個更簡單的方法:

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

太棒了!這就是我想要的,我有一個帶有參數的內置文件,我希望它們可以更改爲用戶寫入的內容。謝謝! – ofribouba

+0

但你知道它爲什麼沒有按照我的方式工作?因爲我定義了$ text1 = $ textbox1.text所以它應該是一樣的沒有? – ofribouba

+0

'$ text1 = $ textbox1.text'是一次性操作,它將'$ textbox.text'的值複製到變量中 - 它不會鏈接它們。 – 2016-12-07 13:21:10