title: Unable to read value from input box
body: <p>I have powershell code where user enters text into an input box, but when I attempt to write this output to screen, it is blank</p>
  
  <pre><code>[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
  [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
  
  $objForm = New-Object System.Windows.Forms.Form 
  $objForm.Text = "Data Entry Form"
  $objForm.Size = New-Object System.Drawing.Size(300,200) 
  $objForm.StartPosition = "CenterScreen"
  
  $objForm.KeyPreview = $True
  $objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") 
      {$x=$objTextBox.Text;$objForm.Close()}})
  $objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") 
      {$objForm.Close()}})
  
  $OKButton = New-Object System.Windows.Forms.Button
  $OKButton.Location = New-Object System.Drawing.Size(75,120)
  $OKButton.Size = New-Object System.Drawing.Size(75,23)
  $OKButton.Text = "OK"
  $OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()})
  $objForm.Controls.Add($OKButton)
  
  $CancelButton = New-Object System.Windows.Forms.Button
  $CancelButton.Location = New-Object System.Drawing.Size(150,120)
  $CancelButton.Size = New-Object System.Drawing.Size(75,23)
  $CancelButton.Text = "Cancel"
  $CancelButton.Add_Click({$objForm.Close()})
  $objForm.Controls.Add($CancelButton)
  
  $objLabel = New-Object System.Windows.Forms.Label
  $objLabel.Location = New-Object System.Drawing.Size(10,20) 
  $objLabel.Size = New-Object System.Drawing.Size(280,20) 
  $objLabel.Text = "Please enter the information in the space below:"
  $objForm.Controls.Add($objLabel) 
  
  $objTextBox = New-Object System.Windows.Forms.TextBox 
  $objTextBox.Location = New-Object System.Drawing.Size(10,40) 
  $objTextBox.Size = New-Object System.Drawing.Size(260,20) 
  $objForm.Controls.Add($objTextBox) 
  
  $objForm.Topmost = $True
  
  $objForm.Add_Shown({$objForm.Activate()})
  [void] $objForm.ShowDialog()
  
  write-host "x is $x"
  </code></pre>
  
  <p>The output to console is </p>
  
  <pre><code>x is 
  </code></pre>
  
  <p>I thought that </p>
  
  <pre><code>$OKButton.Add_Click({$x=$objTextBox.Text;$objForm.Close()})
  </code></pre>
  
  <p>Would read the input into $x if the "OK" button was clicked.</p>