我正在使用Powershell中的treeviews - 每个建筑物都有不同的节点。在我的代码中,我抓取变量,将它们连接在一起,并将其用作变量名称 - 但我的代码将变量看作字符串,而不是已存在的节点的名称...所以我得到将字符串连接到Powershell变量名称
您无法在空值表达式上调用方法。
我该怎么做?这可以帮助我避免在每个建筑物的每个楼层都进行硬编码。这里是我的代码如下所示:
$bldg = "SG1-1" //for example
function refreshPrinterList ($bldg)
{
$bldg1 = $bldg.substring(0,3)
$floor = $bldg.substring(4,1)
$refreshNode = -join('$TreeNode_',$bldg1,'_',$floor)
$refreshNode.gettype() //Returns System.String`
if($bldg1 -eq "SG1") {
if($floor -eq "1") {
$count = $refreshNode.Nodes.Count
while($refreshNode.Nodes.Count -gt 0)
{
$refreshNode.Nodes.RemoveAt($count)
$count--
}
好吧,现在我有一个正确名称的节点,但正如您所指出的,它是一个新节点,您是对的 - 我试图修改现有节点。也许这不是什么大不了的事情,我可以将这个新节点添加到现有树中并替换现有节点。我会给它一个镜头。 – BigfootNick
所以我创建了节点,给它起了同样的名字,并且能够将它添加到我的treelist中,但是当我这样做时,它会出现故障(1st Floor,2nd Floor,1st Floor),因为它会将刷新的节点添加到列表的底部,所以我回来试图删除楼层节点下的所有东西 - 而不是重新创建floor节点。有没有办法接受我连接的字符串,并用它来指向现有TreeNode对象的名称? – BigfootNick
您可以将一个TreeNodeCollection实例化为一个对象,然后使用它的Find方法找到您想要修改的一个。您需要按照以下网址使用New-Object cmdlet:http://technet.microsoft.com/zh-cn/library/dd347574.aspx创建:http://msdn.microsoft.com/zh-cn/库/ system.windows.forms.treenodecollection.find(v = vs.110)的.aspx –