簡體   English   中英

單擊任何想法時,自定義 C# 按鈕什么也不做?

[英]Custom C# Button Does Nothing When Clicked Any Ideas?

我剛剛為我的 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);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM