Windows窗体 - 随机化BackColor - Powershell

时间:2014-08-20 11:43:44

标签: windows forms random colors

我正在使用Windows窗体制作GUI,我想添加一个功能,您可以随机化窗体的背景颜色。请注意,我打算将代码完整地写在Powershell中。

以下是代码片段:

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")  
$objForm = New-Object System.Windows.Forms.Form    
$choochoo = New-Object System.Windows.Forms.Button 

以下是我需要帮助的代码:

$choochoo.Add_Click({$objForm.BackColor = Random}) 

显然,“随机”在此示例中不起作用,仅用作占位符。

我想我需要使用时间生成随机值,但会欣赏更具体的代码。提前谢谢。

3 个答案:

答案 0 :(得分:0)

您希望使用System.Random的实例从System.Drawing.Color的可能静态属性中进行选择。

答案 1 :(得分:0)

如果有人需要,也可以使用它:

function RandomBacklight {` 
$random = New-Object System.Random 
switch ($random.Next(9)) { 
    0 {$objForm.BackColor = "LightBlue"} 
    1 {$objForm.BackColor = "LightGreen"} 
    2 {$objForm.BackColor = "LightPink"} 
    3 {$objForm.BackColor = "Yellow"} 
    4 {$objForm.BackColor = "Orange"} 
    5 {$objForm.BackColor = "Brown"} 
    6 {$objForm.BackColor = "Magenta"} 
    7 {$objForm.BackColor = "White"} 
    8 {$objForm.BackColor = "Gray"} 

} 
}

$choochoo.Add_Click({RandomBacklight})

答案 2 :(得分:0)

最近在学习Powershell。如果有人想要做所有可能的随机颜色(我知道这个线程已经老了),那么今天就可以找到解决方案。

Add-Type -AssemblyName System.Windows.Forms
$Form = New-Object system.Windows.Forms.Form
$Form.Text = "Sample Form"
$Label = New-Object System.Windows.Forms.Label
$Label.Text = "This is a Form."
$Form.Controls.Add($Label)

function colorful{
    $c1 = '';
    $c2 = '';
    foreach( $digit in (1..6 | foreach{ '{0:X}' -f (Get-Random -Max 16) })){
        $c1 = "$c1"+"$digit";}
    foreach( $digit in (1..6 | foreach{ '{0:X}' -f (Get-Random -Max 16) })){
        $c2 = "$c2"+"$digit";}
    $Form.BackColor = "#FF"+$c1;
    $Form.ForeColor = "#FF"+$c2;
};
colorful;
$Form.ShowDialog();