使用get-random设置argb的错误

时间:2017-07-17 12:57:38

标签: powershell

我试图给面板的.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工作室

2 个答案:

答案 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)