2017-07-17 43 views
0

我想給面板的.BackColor隨機顏色。錯誤使用隨機設置argb

$rndm1 = Get-Random -minimum 50 -maximum 240 
$rndm2 = Get-Random -minimum 50 -maximum 240 
$rndm3 = Get-Random -minimum 50 -maximum 240 

這顯然作品:

$pBar.BackColor = [System.Drawing.color]::FromArgb(60,60,60) 

但如果使用隨機數並不:

$rndmResult = ("'" + $rndm1 + ',' + $rndm2 + ',' + $rndm3 + "'") 
$pBar.BackColor = [System.Drawing.color]::FromArgb($rndmResult) 

我已經寫了這麼多不同的方式代碼,但沒有人可以工作。我也嘗試以這種$rndm1 = ("'" + (Get-Random -minimum 50 -maximum 240) + "'")的方式編寫$ rndm變量 - 但我無法繞過它。我究竟做錯了什麼?錯誤輸出是:這取決於我如何放置"'

ERROR: Cannot convert argument "argb", with value: "'117,56,167'", for "FromArgb" to type "System.Int32": "Cannot convert value "'117,56,167'" to type "System.Int32".

ERROR: Cannot convert value "," to type "System.Int32". Error: "The input string had invalid format."

Powershell的工作室2016

+2

'[的System.Drawing.Color] :: FromArgb($ rndm1,$ rndm2,$ rndm3)'工作正常 –

回答

2

在這裏,你是路過3個不同的整數:

$pBar.BackColor = [System.Drawing.color]::FromArgb(60,60,60) 

在這裏,你傳遞一個字符串:

$rndmResult = ("'" + $rndm1 + ',' + $rndm2 + ',' + $rndm3 + "'") 
$pBar.BackColor = [System.Drawing.color]::FromArgb($rndmResult) 

而是直接傳遞整數:

$pBar.BackColor = [System.Drawing.color]::FromArgb($rndm1,$rndm2,$rndm3) 
+0

啊,感謝您的解釋。這可能是我沒有嘗試的唯一的東西...... :)再次 - 謝謝! – MadsTheMan

1

在這一步:

$rndmResult = ("'" + $rndm1 + ',' + $rndm2 + ',' + $rndm3 + "'") 

您所創建的字符串'156,93,194'(假設獲取-隨機產生的號碼156,93和194)。

FromArgb()沒有重載,只有一個字符串作爲它的參數。

直接值傳遞給functino代替:

[System.Drawing.color]::FromArgb($rndm1,$rndm2,$rndm3) 
+0

不知道我FromArgb()不能接受一個字符串作爲它的參數,猜測那是我失敗的時候。感謝您指出。 – MadsTheMan

+2

@MadsTheMan爲了將來的參考,您可以輸入沒有括號的方法名稱(如'[System.Drawing.Color] :: FromArgb'),並在提示符中按回車鍵或查找[MSDN上的文檔](https: //msdn.microsoft.com/en-us/library/system.drawing.color.fromargb(v=vs.110).aspx)如果你想看到有效的重載方法 –

+0

謝謝,我一定會使用它從今起。 :) – MadsTheMan