自定义C#按钮在单击时不起任何作用任何想法?
我刚刚为我的C#uni项目制作了一个新按钮。出于某种原因,它似乎不起任何作用 这是我的按钮代码:自定义C#按钮在单击时不起任何作用任何想法?,c#,button,C#,Button,我刚刚为我的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_WS24338
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.onmousedup
in
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);
}
好吧,你为什么说它不起作用?你有错误吗?你能告诉我这个按钮在哪里吗。您是否在OnMouseDown和OnMouseUp中放置了断点。。。。他们会被处决吗?我不确定我是否理解您的问题。什么代码不能执行?此外,我没有看到单击的事件处理程序。。。我知道mousedown和mouseup是不一样的。@JonathanAlfaro好的,是的,我尝试过断点,但它们做的不多,所有的事情都执行得差不多,这是我登录表单上的声明:private void BtnLogin_Click(object sender,EventArgs e){MessageBox.Show(“BigOOF”)}等一下。。。你的意思是我必须在按钮内部声明一个处理程序,它是从“按钮”继承的,所以它实际上像按钮一样工作?好的,你是如何将事件处理程序注册到按钮的?你能在设计器中发布一张按钮属性的图片,显示与之关联的图标吗?或者您可以显示以编程方式将事件处理程序注册到单击事件的代码吗?哇,图例。你们又来了。爱你!附言:我在智力上受到挑战,一点传奇都没有。只是一个偏执狂:)我也喜欢呆在这里,注意安全。