C# 鼠标悬停时按钮上发生的某些自动刷新问题

C# 鼠标悬停时按钮上发生的某些自动刷新问题,c#,windows,graphics,C#,Windows,Graphics,我最近一直在开发一个windows应用程序。它是由几个类组成的,这些类基本上把一个图像画在一起。完成后,我制作了两个按钮,其中一个单击事件改变了绘制对象的一些颜色 包括按钮在内,一切正常,但我的问题是,每次我用鼠标悬停在按钮上方时,窗体似乎都会刷新(它会闪烁一次)。当然,我只希望表单在单击按钮后刷新,而不是悬停 我希望我能清楚地解释我的问题 我不确定该给你哪段代码。但这是我的主要申请表: using System; using System.Collections.Generic; using

我最近一直在开发一个windows应用程序。它是由几个类组成的,这些类基本上把一个图像画在一起。完成后,我制作了两个按钮,其中一个单击事件改变了绘制对象的一些颜色

包括按钮在内,一切正常,但我的问题是,每次我用鼠标悬停在按钮上方时,窗体似乎都会刷新(它会闪烁一次)。当然,我只希望表单在单击按钮后刷新,而不是悬停

我希望我能清楚地解释我的问题

我不确定该给你哪段代码。但这是我的主要申请表:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Kruispunt
{
    public partial class Kruispunt : Form
    {
        private Oversteekplaats autoNZ, autoOW, fietsNZ, fietsOW, zebraNZ, zebraOW;

        private Oversteekplaats[] oversteekplaatsen = new Oversteekplaats[6];

        private CPU cpu = new CPU();

        private Button NZknop = new Button();
        private Button OWknop = new Button();

        private CheckBox storingCheckBox = new CheckBox();

        public Kruispunt()
        {
            InitializeComponent();

            Graphics g = Graphics.FromHwnd(this.Handle);

            autoNZ = new Oversteekplaats(300, 300, 200, 200, g, Status.Aan, Color.Green, Orientatie.NZ, Soort.Auto);
            autoOW = new Oversteekplaats(300, 300, 200, 200, g, Status.Aan, Color.Red, Orientatie.OW, Soort.Auto);

            fietsNZ = new Oversteekplaats(300, 120, 500, 200, g, Status.Aan, Color.Green, Orientatie.NZ, Soort.Fiets);
            fietsOW = new Oversteekplaats(120, 300, 200, 500, g, Status.Aan, Color.Red, Orientatie.OW, Soort.Fiets);

            zebraNZ = new Oversteekplaats(300, 120, 620, 200, g, Status.Aan, Color.Green, Orientatie.NZ, Soort.Voetganger);
            zebraOW = new Oversteekplaats(120, 300, 200, 620, g, Status.Aan, Color.Red, Orientatie.OW, Soort.Voetganger);

            oversteekplaatsen[0] = autoNZ;
            oversteekplaatsen[1] = autoOW;
            oversteekplaatsen[2] = fietsNZ;
            oversteekplaatsen[3] = fietsOW;
            oversteekplaatsen[4] = zebraNZ;
            oversteekplaatsen[5] = zebraOW;

            storingCheckBox.Text = "Kruispunt in storing";
            storingCheckBox.Location = new Point(20, 15);
            storingCheckBox.Size = new System.Drawing.Size(150, 25);
            this.Controls.Add(storingCheckBox);

            NZknop.Text = "Noord-Zuid Groen";
            NZknop.Location = new Point(20, 40);
            NZknop.Size = new System.Drawing.Size(110, 25);
            NZknop.Click += new EventHandler(NZknop_Click);
            this.Controls.Add(NZknop);

            OWknop.Text = "Oost-West Groen";
            OWknop.Location = new Point(20, 70);
            OWknop.Size = new System.Drawing.Size(110, 25);
            OWknop.Click += new EventHandler(OWknop_Click);
            this.Controls.Add(OWknop);
        }

        void NZknop_Click(object sender, EventArgs e)
        {
            cpu.groenNoordZuid(ref oversteekplaatsen);

            this.Refresh();
        }

        void OWknop_Click(object sender, EventArgs e)
        {
            cpu.groenOostWest(ref oversteekplaatsen);

            this.Refresh();
        }

        private void Kruispunt_Paint(object sender, PaintEventArgs e)
        {
            autoNZ = oversteekplaatsen[0];
            autoOW = oversteekplaatsen[1];
            fietsNZ = oversteekplaatsen[2];
            fietsOW = oversteekplaatsen[3];
            zebraNZ = oversteekplaatsen[4];
            zebraOW = oversteekplaatsen[5];

            autoNZ.teken();
            autoOW.teken();

            fietsNZ.teken();
            fietsOW.teken();

            zebraNZ.teken();
            zebraOW.teken();
        }

        private void Kruispunt_Load(object sender, EventArgs e)
        {

        }
    }
}

WinForms?WPF?你有密码吗?例如,单击处理程序、XAML/Designer.cs?WinForms?WPF?你有密码吗?例如,单击处理程序,XAML/Designer.cs?