自定义C#按钮单击任何想法都没有吗?

问题描述 投票:0回答:1

我刚刚为我的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根据要求提供的图片:Screenshot of button properties

c# button
1个回答
1
投票

发生这种情况是因为您正在调用

[]中不是base.OnMouseDown,而不是[C0

base.OnMouseUp

我已经复制了问题,并通过以下方式解决了问题:

protected override void OnMouseUp(MouseEventArgs e)
© www.soinside.com 2019 - 2024. All rights reserved.