2016-12-06 4 views
0

Я создаю скрипт, и я хочу, чтобы пользователь пометил определенные флажки, чтобы включить txtboxes.серое текстовое поле до тех пор, пока оно не включено по галочке

Когда пользователь нажимает на chexbox, текстовое поле рядом с ним будет включено. Если они этого не сделают, то они не смогут вставлять в него текст.

В данный момент это не сработает, есть ли у кого-то идея, как его изменить? Спасибо за помощь!

Вот часть моего сценария с флажком и текстовым полем:

#creating the whole form 
$objForm = New-Object System.Windows.Forms.Form 
$objForm.Text = "Ofir`s script" 
$objForm.Size = New-Object System.Drawing.Size(480,240) 
$objForm.StartPosition = "CenterScreen" 


#This creates the TextBox1 
$objTextBox1 = New-Object System.Windows.Forms.TextBox 
$objTextBox1.Location = New-Object System.Drawing.Size(300,40) 
$objTextBox1.Size = New-Object System.Drawing.Size(140,150) 
$objTextBox1.TabIndex = 3 
$objTextBox1.text = Dsp.z 
$objForm.Controls.Add($objTextBox1) 

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

#changing the file name 
if ($objDsp2Checkbox.Checked -eq $true) 
{ 
$objTextBox1.Enabled = $true 
} 

elseif ($objDsp2Checkbox.Checked -eq $false) 
{ 
$objTextBox1.Enabled = $false 
}  


#makes the form appear on top of the screen 
$objForm.Topmost = $True 

$objForm.Add_Shown({$objForm.Activate()}) 
[void] $objForm.ShowDialog() 
+0

[Я написал код, который не работает: \ * пачкать \ *] (https://ericlippert.com/2014/03/05/how- to-debug-small-programs /), есть некоторые руководства для того, что делать, чтобы понять, почему, но также и то, что попросить задать более конкретный и ответственный вопрос. (Не все применимы к Powershell, я признаю) – TessellatingHeckler

+0

спасибо, я вижу вашу точку зрения. im новый для этого веб-сайта и для powershell, поэтому я не знаю, что я делаю неправильно здесь. попытался сделать его более ясным. – ofribouba

ответ

0

Вам нужно назначить битый код, который включает/отключает текстовое поле для обработчика событий на объекте флажка. Скорее всего, событие Click.

$objDsp2Checkbox_OnClick = { 
    if ($objDsp2Checkbox.Checked -eq $true) 
    { 
     $objTextBox1.Enabled = $true 
    } 
    elseif ($objDsp2Checkbox.Checked -eq $false) 
    { 
     $objTextBox1.Enabled = $false 
    } 
} 
$objDsp2Checkbox.Add_Click($objDsp2Checkbox_OnClick) 

http://social.technet.microsoft.com/wiki/contents/articles/25911.how-to-add-a-powershell-gui-event-handler-part-1.aspx

https://msdn.microsoft.com/en-us/library/system.windows.forms.textbox(v=vs.110).aspx

+1

'$ objTextBox1.Enabled = $ objDsp2Checkbox.Checked' нет необходимости в if/else –

+0

спасибо! это отлично работает. – ofribouba