我试图给面板的.BackColor一个随机颜色。
$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)
我用很多不同的方式编写了代码,但似乎都没有。我也尝试用rndm
这样的方式编写$ $rndm1 = ("'" + (Get-Random -minimum 50 -maximum 240) + "'")
变量 - 但我无法绕过它。我究竟做错了什么?错误输出是:
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."
取决于我放置"
和'
的方式。
2016年Powershell工作室
答案 0 :(得分: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)
答案 1 :(得分:1)
在此步骤中:
$rndmResult = ("'" + $rndm1 + ',' + $rndm2 + ',' + $rndm3 + "'")
你创建字符串'156,93,194'
(假设Get-Random生成数字156,93和194)。
FromArgb()
没有重载,只需要一个字符串作为它的参数。
将值直接传递给functino:
[System.Drawing.color]::FromArgb($rndm1,$rndm2,$rndm3)