сначала я должен сказать, что код работает идеально.
но меня беспокоит, что при таком использовании переменная img будет избыточной, потому что у меня также есть переменная _originalImage.
код в верхней части класса:
private bool _DisplayFocusCues = true;
private Image _originalImage;
private Image _clickImage;
private Image img;
public CustomButton()
{
this.FlatStyle = FlatStyle.Flat;
this.FlatAppearance.BorderSize = 0;
this.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); // Transparent
this.FlatAppearance.MouseDownBackColor = Color.FromArgb(0, 255, 255, 255); // Transparent on click
this.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 255, 255, 255); // Transparent on hover
this.DisplayFocusCues = false;
// Assume Properties.Resources.YourImageResource is the resource identifier for your image
img = ResizeImage(Properties.Resources.icons8_record_32, 50, 50);
this.Image = img;
this.Size = img.Size;
_originalImage = img;
}
а затем в событии OnMouseUp
protected override void OnMouseUp(MouseEventArgs mevent)
{
base.OnMouseUp(mevent);
_originalImage = img;
this.Image = _originalImage;
}
причина, по которой я использую переменную img, заключается в том, что при ее использовании в событии OnMouseUp эффект нажатия кнопки изменяется при нажатии кнопки, меняющей цвета.
без переменной img, когда я нажимаю кнопку каждый раз, цвет кнопки становится все темнее и темнее и никогда не возвращается к исходному цвету кнопки.





Я не тестировал следующий код, но предполагаю, что это сработает.
private bool _DisplayFocusCues = true;
private Image _originalImage;
private Image _clickImage;
public CustomButton()
{
this.FlatStyle = FlatStyle.Flat;
this.FlatAppearance.BorderSize = 0;
this.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); // Transparent
this.FlatAppearance.MouseDownBackColor = Color.FromArgb(0, 255, 255, 255); // Transparent on click
this.FlatAppearance.MouseOverBackColor = Color.FromArgb(0, 255, 255, 255); // Transparent on hover
this.DisplayFocusCues = false;
// Assume Properties.Resources.YourImageResource is the resource identifier for your image
this.Image = ResizeImage(Properties.Resources.icons8_record_32, 50, 50);
this.Size = this.Image.Size;
_originalImage = this.Image;
}
protected override void OnMouseUp(MouseEventArgs mevent)
{
base.OnMouseUp(mevent);
this.Image = _originalImage;
}
protected override void OnMouseDown(MouseEventArgs mevent)
{
base.OnMouseDown(mevent);
if (_clickImage != null)
this.Image = _clickImage;
}