У меня WINDOWS 10 и POWERSHELL 7.4.3.
Я хочу изменить цвета (передний и задний цвет) элемента управления кнопкой, когда мышь наводит/оставляет кнопку. Вот выдержка из настроек управления кнопками:
$MyButton = New-Object System.Windows.Forms.Button
$MyButton.FlatStyle = [System.Windows.Forms.FlatStyle]::Flat
$MyButton.Font = New-Object System.Drawing.Font("Roboto", 12,[System.Drawing.FontStyle]::Bold,[System.Drawing.GraphicsUnit]::Point, 0)
$MyButton.Location = New-Object System.Drawing.Point(5, 112)
$MyButton.Name = "MyButton"
$MyButton.Text = "My button"
$MyButton.Size = New-Object System.Drawing.Size(150, 40)
Я попробовал добавить
$MyButton.Add_MouseHover({$MyButton.Color = [System.Drawing.Color]::Orange})
чтобы изменить цвет фона, но цвет не меняется при наведении мыши на кнопку.
Какие-либо предложения?
Вместо MouseHover
используйте события MouseEnter
и MouseLeave
.
$DemoForm = [System.Windows.Forms.Form]::new()
$MyButton = [System.Windows.Forms.Button]::new()
$MyButton.FlatStyle = [System.Windows.Forms.FlatStyle]::Flat
$MyButton.Font = [System.Drawing.Font]::new('Roboto', 12,[System.Drawing.FontStyle]::Bold,[System.Drawing.GraphicsUnit]::Point, 0)
$MyButton.Location = [System.Drawing.Point]::new(55, 112)
$MyButton.Size = [System.Drawing.Size]::new(150, 40)
$MyButton.Name = "MyButton"
$MyButton.Text = "My button"
$MyButton.Add_MouseEnter({
$this.ForeColor = [System.Drawing.Color]::Orange
$this.BackColor = [System.Drawing.Color]::CadetBlue
})
$MyButton.Add_MouseLeave({
$this.ForeColor = $DemoForm.ForeColor
$this.BackColor = $DemoForm.BackColor
})
$DemoForm.Controls.Add($MyButton)
$DemoForm.ShowDialog()
# don't forget to remove the form from memory when all done
$DemoForm.Dispose()
Большое спасибо. Работает как шарм. Я часами искал в Интернете и не нашел ни одного работающего примера. Это довольно крутой фрагмент кода. Еще раз спасибо.
Свойство
Color
не существует. Вы имеете в виду свойстваBackColor
иForeColor
. Если вы хотите, чтобы эти цвета менялись, когда указатель мыши входит в помещение и покидает его, подпишитесь на событияMouseEnter
иMouseLeave
, а также на событияEnter
endLeave
на случай, если элементы управления должны изменить цвет также, когда они получают фокус (первое в этом случае события должны вызвать последнее) - возможно, вы захотите сохранить исходные цвета (если они не унаследованы от родительской формы по умолчанию)