2016-08-30 2 views
0

Я хочу изменить цвет фона richTextBox, когда пользователь нажимает на него. Я полагаю, что мне понадобится событие click. цвета должны быть конкретными, поэтому они не делают текст трудным для чтения. Я полагаю, мне понадобится список или массив, чтобы выбрать цвета. Я не думаю, что мне понадобится случайная функция, но просто способ изменить цвет 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

Я хотел бы использовать Hashtable для хранения пар цветов (назад/передние), а затем выполнить изменение цвета на события 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}) 

Это должно сделать это так, когда вы нажимаете в окне он устанавливает черный фон и шрифт на белый, и обменивает его обратно при нажатии нестандартно. При желании вы можете добавить пары цветов в хеш-таблицу.

Смежные вопросы