2016-08-30 49 views
0

我正在尋找當用戶點擊它時更改richTextBox的背景顏色。我想我需要點擊事件。顏色應該是特定的,所以他們不會使文本難以閱讀。我想我會需要一個列表或數組來選擇顏色。我不認爲我需要一個隨機函數,但只是一種方法來改變richTextBox的顏色。有任何想法嗎?Powershell:我可以通過點擊事件更改richTextBox中的顏色​​嗎?

感謝

#Generated Form Function 
function GenerateForm { 
####################################################################### 
# Generated On: 8/30/2016 4:54 PM 
# Generated By: christnerw 
######################################################################## 

#region Import the Assemblies 
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null 
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null 
#endregion 

#region Generated Form Objects 
$form1 = New-Object System.Windows.Forms.Form 
$richTextBox4 = New-Object System.Windows.Forms.RichTextBox 
$richTextBox3 = New-Object System.Windows.Forms.RichTextBox 
$richTextBox2 = New-Object System.Windows.Forms.RichTextBox 
$richTextBox1 = New-Object System.Windows.Forms.RichTextBox 
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState 
#endregion Generated Form Objects 

#region Generated Form Code 
$System_Drawing_Size = New-Object System.Drawing.Size 
$System_Drawing_Size.Height = 262 
$System_Drawing_Size.Width = 284 
$form1.ClientSize = $System_Drawing_Size 
$form1.DataBindings.DefaultDataSourceUpdateMode = 0 
$form1.Name = "form1" 
$form1.Text = "Primal Form" 

$richTextBox4.DataBindings.DefaultDataSourceUpdateMode = 0 
$System_Drawing_Point = New-Object System.Drawing.Point 
$System_Drawing_Point.X = 140 
$System_Drawing_Point.Y = 150 
$richTextBox4.Location = $System_Drawing_Point 
$richTextBox4.Name = "richTextBox4" 
$System_Drawing_Size = New-Object System.Drawing.Size 
$System_Drawing_Size.Height = 100 
$System_Drawing_Size.Width = 100 
$richTextBox4.Size = $System_Drawing_Size 
$richTextBox4.TabIndex = 3 
$richTextBox4.Text = "" 

$form1.Controls.Add($richTextBox4) 

$richTextBox3.DataBindings.DefaultDataSourceUpdateMode = 0 
$System_Drawing_Point = New-Object System.Drawing.Point 
$System_Drawing_Point.X = 32 
$System_Drawing_Point.Y = 150 
$richTextBox3.Location = $System_Drawing_Point 
$richTextBox3.Name = "richTextBox3" 
$System_Drawing_Size = New-Object System.Drawing.Size 
$System_Drawing_Size.Height = 100 
$System_Drawing_Size.Width = 100 
$richTextBox3.Size = $System_Drawing_Size 
$richTextBox3.TabIndex = 2 
$richTextBox3.Text = "" 

$form1.Controls.Add($richTextBox3) 

$richTextBox2.DataBindings.DefaultDataSourceUpdateMode = 0 
$System_Drawing_Point = New-Object System.Drawing.Point 
$System_Drawing_Point.X = 32 
$System_Drawing_Point.Y = 37 
$richTextBox2.Location = $System_Drawing_Point 
$richTextBox2.Name = "richTextBox2" 
$System_Drawing_Size = New-Object System.Drawing.Size 
$System_Drawing_Size.Height = 98 
$System_Drawing_Size.Width = 100 
$richTextBox2.Size = $System_Drawing_Size 
$richTextBox2.TabIndex = 1 
$richTextBox2.Text = "" 

$form1.Controls.Add($richTextBox2) 

$richTextBox1.DataBindings.DefaultDataSourceUpdateMode = 0 
$System_Drawing_Point = New-Object System.Drawing.Point 
$System_Drawing_Point.X = 140 
$System_Drawing_Point.Y = 37 
$richTextBox1.Location = $System_Drawing_Point 
$richTextBox1.Name = "richTextBox1" 
$System_Drawing_Size = New-Object System.Drawing.Size 
$System_Drawing_Size.Height = 98 
$System_Drawing_Size.Width = 100 
$richTextBox1.Size = $System_Drawing_Size 
$richTextBox1.TabIndex = 0 
$richTextBox1.Text = "" 

$form1.Controls.Add($richTextBox1) 

#endregion Generated Form Code 

#Save the initial state of the form 
$InitialFormWindowState = $form1.WindowState 
#Init the OnLoad event to correct the initial state of the form 
$form1.add_Load($OnLoadForm_StateCorrection) 
#Show the Form 
$form1.ShowDialog()| Out-Null 

} #End Function 

#Call the Function 
GenerateForm 

回答

0

我會使用一個哈希表來存儲你的顏色對(後/前),然後執行上的GotFocus和LostFocus事件的顏色變化。

$Colors = @{ 
    'Black'='White' 
    'White'='Black' 
} 
Function ColorSwap = { 
Param([string]$Ctrl) 
    Invoke-Expression ('${0}.BackColor = $Colors.(${0}.BackColor)' -f $Ctrl) 
    Invoke-Expression ('${0}.ForeColor = $Colors.(${0}.ForeColor)' -f $Ctrl) 
} 
$richTextBox1.add_GotFocus({ColorSwap richTextBox1}) 
$richTextBox1.add_LostFocus({ColorSwap richTextBox1}) 
$richTextBox2.add_GotFocus({ColorSwap richTextBox2}) 
$richTextBox2.add_LostFocus({ColorSwap richTextBox2}) 
$richTextBox3.add_GotFocus({ColorSwap richTextBox3}) 
$richTextBox3.add_LostFocus({ColorSwap richTextBox3}) 
$richTextBox4.add_GotFocus({ColorSwap richTextBox4}) 
$richTextBox4.add_LostFocus({ColorSwap richTextBox4}) 

應該使它所以當你在框中點擊背景設置爲黑色和字體爲白色,當您單擊框外交換回來。如果需要,您可以將顏色對添加到散列表。