【发布时间】:2017-11-04 06:07:09
【问题描述】:
我正在开发一个显示未知数量文本框的程序。 这些文本框稍后将显示有关不同服务器的数据(例如 ping 数据) 未知,因为我不知道会有多少台服务器在工作,它们会自动从列表中选择……可以是 2、3 或 15。 文本框将出现在一个根据服务器数量调整大小的新窗口中。 问题是我在程序后面引用文本框时遇到了困难。
我的第一次尝试是这样的:
创建了一个函数来显示文本框:
function c_inputbox ($iname, $iposx, $iposy, $isizex, $isizey)
{
$iname = New-Object System.Windows.Forms.richTextBox
$iname.Location = New-Object System.Drawing.Size($iposx, $iposy)
$iname.Size = New-Object System.Drawing.Size($isizex, $isizey)
$iname
}
然后我生成文本框,$objform1 是主窗口,$x 和 $y 是用于在列中定位文本框的变量:
foreach ($srv in $stringArray)
{
$name = "textbox" + $i
$objform1.Controls.Add((c_inputbox $name $x ($y + 20) 350 100))
$i ++
}
它显示我想要的文本框,但引用 .text 属性不再起作用。我尝试了几种方法来测试它:
$textbox1.text = "test"
$name.text = "test"
我的第二次尝试是将名称存储在一个数组中,我什至尝试在声明 texboxes 之前用名称填充数组($length 包含服务器的数量):
$j = 1
for ($j; $j -le $length; $j++)
{
$textbox[$j] = "textbox" + $j
}
所以现在数组应该包含“textbox1”、“textbox2”等。然后我尝试再次调用它们以将它们定义为文本框对象:
$textbox[$i] = New-Object System.Windows.Forms.richTextBox
$textbox[$i].Location = New-Object System.Drawing.Size($positionx, $positiony)
$textbox[$i].Size = New-Object System.Drawing.Size(350, 100)
$objform1.Controls.Add($textbox[$i])
但 PowerShell 再次返回错误:
无法索引到空数组。 + $objform1.Controls.Add($textbox[知道如何实现这一点,或者甚至可以在 PowerShell 中实现吗?
【问题讨论】:
-
你能告诉我们你最初是如何使用
$textbox的吗?您是否在$textbox[$i] = New-Object System.Windows.Forms.RichTextBox之前声明它或为其分配任何东西? -
我尝试用名称填充数组,将代码添加到原始帖子中
-
我认为你可能有点过于复杂了
-
是的,我做到了...您的解决方案很简单而且效果很好。
标签: powershell textbox richtextbox