按钮需要更改对象的状态,似乎可以在调试中工作,但什么也没发生

本文关键字:工作 调试 什么 对象 状态 按钮 | 更新日期: 2023-09-27 18:21:42

因此,我正在做一项家庭作业,其中我需要在Windows窗体中建立一个十字路口以及自动红绿灯等。

现在,出于测试目的,我制作了一个按钮,将红绿灯状态从打开更改为关闭(反之亦然)。状态是一个名为LampStatus的枚举,它使用Aan(开)、Uit(关)和存储(这还不需要使用)。

灯类如下:

public class Lamp
{
    protected Color kleur;
    protected int x, y, straal;
    protected LampStatus status;
    public Color Kleur
    {
        get
        {
            if (status == LampStatus.Uit)
                return Color.Gray;
            else
                return kleur;
        }
        set { kleur = value; }
    }
    public LampStatus Status
    {
        set
        {
            status = value;
        }
        get
        {
            return status;
        }
    }
    // constructor 
    public Lamp()
    {
        kleur = Color.Red;
        x = y = 0;
        straal = 1;
        status = LampStatus.Uit;
    }
    // constructor 
    public Lamp(Color kleur, int x, int y, int r)
    {
        this.kleur = kleur;
        this.x = x;
        this.y = y;
        this.straal = r;
        status = LampStatus.Uit;
    }
    public virtual void Teken(Graphics g)
    {
        if (g != null)
        {
            SolidBrush Brush = new SolidBrush(Kleur);
            g.FillEllipse(Brush, x, y, straal, straal);
            g.DrawEllipse(new Pen(Color.Black), x, y, straal, straal);
        }
    }
}

现在,当我按下Form1:中的按钮时

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private Lamp lamp = new Lamp(Color.Red, 15, 15, 50);
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        lamp.Teken(e.Graphics);
    }
    private void testButton_Click(object sender, EventArgs e)
    {
        if (lamp.Status == LampStatus.Uit)
            lamp.Status = LampStatus.Aan;
        else
            lamp.Status = LampStatus.Uit;
    }
}

似乎什么都没有发生,尽管当我调试对象灯时,颜色都变为color.Red,状态也变为LampStatus.Aan.

当我硬编码:灯。Status=LampStatus.Aan在Form1_Paint方法中,颜色确实变为红色。

编辑;如果有任何困惑,请发表评论,我会尽力解释。

按钮需要更改对象的状态,似乎可以在调试中工作,但什么也没发生

使用这个。Refresh()修复了此问题,并使灯的颜色正确更改。