我正在使用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 –