У меня есть функция Add-TextBox
, которая создает элемент управления TextBox
и назначает блок его обработчику событий.
Проблема, с которой я сталкиваюсь, заключается в том, что этот блок, вероятно, вызывается с глобальным пространством имени переменные, объявленные внутри функции Add-TextBox
, ей недоступны.Как мне сделать их доступными?
Редактировать : добавлен полный код
Add-Type -AssemblyName System.Windows.Forms
Function Add-Control() {
Param (
[System.Windows.Forms.Form]$Form,
[string]$ControlType,
[System.Windows.Forms.Control]$AfterControl = $null,
[int]$Padding = 0
)
$control = New-Object System.Windows.Forms.$ControlType
$control.AutoSize = $true
$x = 5
$y = 5
if ($AfterControl) {
$y = $AfterControl.Location.Y + $AfterControl.Size.Height + $Padding
}
$control.Location = "5,$y"
$form.Controls.Add($control)
return $control
}
Function Add-TextBox() {
Param (
[System.Windows.Forms.Form]$Form,
[string]$Placeholder = "",
[System.Windows.Forms.Control]$AfterControl = $null,
[int]$Padding = 0
)
$control = Add-Control -Form $Form -ControlType "TextBox" -AfterControl $AfterControl -Padding $Padding
$control.Add_GotFocus({
Write-Host "Placeholder is null: $($Placeholder -eq $null)"
if ($this.Text -eq $Placeholder) {
$this.ForeColor = "Black"
$this.Text = ""
}
})
$control.Add_LostFocus({
if ($this.Text -eq "") {
$this.ForeColor = "Darkgray"
$this.Text = $Placeholder
}
})
return $control
}
$form = New-Object system.Windows.Forms.Form
$textbox = Add-TextBox -Form $form -Placeholder "(XXXXXX, npr. 012345)"
$form.ShowDialog()