c# - 单击任何想法时,自定义 C# 按钮什么都不做?
问题描述
我刚刚为我的 C# uni 项目制作了一个新按钮。出于某种原因,它似乎没有任何想法?
这是我的按钮代码:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSD_A2_WS2435593_WS243380.Classes.FormsaAndControls
{
class clsFlatButton : Button //control object declaration.
{
public clsFlatButton()
{
BackColor = Color.FromArgb(225, 236, 244);
ForeColor = Color.FromArgb(57, 115, 157);
}
protected override void OnPaint (PaintEventArgs e) //draws the rectangle and text
{
e.Graphics.FillRectangle(new SolidBrush(BackColor), 0, 0, this.Width, this.Height);
TextFormatFlags flags = TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter;
TextRenderer.DrawText(e.Graphics, Text, Font, new Point(Width + 3, Height / 2), ForeColor, flags);
}
protected override void OnMouseEnter(EventArgs e) //changes on mouse hover it enters the box
{
base.OnMouseEnter(e);
BackColor = onMouseHoverBackColour;
ForeColor = onMouseHoverForeColour;
}
protected override void OnMouseLeave(EventArgs e) //changes on mouse hover when it leaves the box
{
base.OnMouseEnter(e);
BackColor = Color.FromArgb(225, 236, 244);
ForeColor = Color.FromArgb(57, 115, 157);
}
protected override void OnMouseDown(MouseEventArgs e) //changes on mouse click
{
base.OnMouseDown(e);
BackColor = Color.FromArgb(57, 115, 157);
ForeColor = Color.FromArgb(225, 236, 244);
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseDown(e);
BackColor = Color.FromArgb(225, 236, 244);
ForeColor = Color.FromArgb(57, 115, 157);
}
//Available settings:
//Static values for initialisation.
private Color onMouseHoverBackColour = Color.FromArgb(251, 255, 255);
private Color onMouseHoverForeColour = Color.FromArgb(6, 64, 106);
//These will appear on the clsFlatButton control so they can be changed.
public Color onMouseHoverBackColourChanger
{
get { return onMouseHoverBackColour;}
set { onMouseHoverBackColour = value; }
}
public Color onMouseHoverForeColourChanger
{
get { return onMouseHoverForeColour; }
set { onMouseHoverForeColour = value; }
}
}
}
因此,当我单击它时,即使悬停它也会改变颜色,尽管它实际上并没有执行其中的代码。
所以我无话可说,但stackoverflow不会让我在没有更多普通文本的情况下发布这个问题。所以我们开始吧,我想我可以粘贴 lorem ipsum 但我不想被骂。
编辑:#1 请求的图像: 按钮属性的屏幕截图
解决方案
发生这种情况是因为您正在调用
base.OnMouseDown
而不是base.OnMouseUp
在
protected override void OnMouseUp(MouseEventArgs e)
我已经重现了这个问题,并通过以下方式解决了它:
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
BackColor = Color.FromArgb(225, 236, 244);
ForeColor = Color.FromArgb(57, 115, 157);
}
推荐阅读
- python - 仅在某些行上对列应用 pandas 函数
- javascript - 使用复选框删除一组名称
- python - 指定字符串是 Python 的 unicode 并且不转义斜杠
- typo3 - 在 Fluid 模板中显示语言图标
- android - Google Nearby 中的传入文件有效负载感知和 onPayloadTransferUpdate 频率
- postgresql - 将 postgresql 数据库转储上传到 heroku 失败
- c# - 从 FlowPanel 图像中关闭表单
- android - 如何在我的位置图层顶部放置标记?
- rdf - RDF 1.1 语义中语句标识符的模型理论语义
- file-locking - Bash - “更多”命令会阻止写入文件吗?