按钮需要更改对象的状态,似乎可以在调试中工作,但什么也没发生
本文关键字:工作 调试 什么 对象 状态 按钮 | 更新日期: 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()修复了此问题,并使灯的颜色正确更改。