2013-10-31 42 views
0

我有一个小的初学者问题,我有一个buttonclick事件,我希望事件在form1_paint中初始化绘画事件。我有一个班级Oversteekplaats有两个绘画事件,一个叫teken1,另一个叫teken2。在Form1_paint中,teken1已经初始化。通过一个布尔值,当你点击Button1时,它会被改变,我想让它重绘form1_paint。这个按钮点击事件会做它需要做的事吗?

代码:

public Form1() 
{ 
    InitializeComponent(); 

    // Opdracht 1 
    rood = new FietsLamp(Color.Red, 10, 10, 60); 
    oranje = new VoetgangerLamp(Color.Orange, 120, 10, 60); 
    rood.Status = LampStatus.Aan; 
    oranje.Status = LampStatus.Aan; 

    // Opdracht 2 
    stoplicht = new Stoplicht(10, 120, 130, 280); 

    // Opdracht 3 
    voetgangerlicht = new VoetgangerStoplicht(150, 120, 130, 195); 
    fietslicht = new FietsStoplicht(290, 120, 130, 195); 

    // Opdracht 5 (teken oversteekplaats en zebrapad voor voetganger) 
    oversteekplaats1 = new Oversteekplaats(650, 10, 200, 200); 
    oversteekplaats2 = new Oversteekplaats(650, 210, 200, 200); 
    oversteekplaats3 = new Oversteekplaats(650, 410, 200, 200); 
    oversteekplaats4 = new Oversteekplaats(450, 210, 200, 200); 
    oversteekplaats5 = new Oversteekplaats(850, 210, 200, 200); 
} 


private void button1_Click(object sender, EventArgs e) 
{ 
    if (voetganger == false) 
    { 
     voetganger = true; 
    } 
    if (voetganger == true) 
    { 
     voetganger = false; 
    } 

} 

public void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
{ 
    // Opdracht 1 graphics 
    rood.Teken(e.Graphics); 
    oranje.Teken(e.Graphics); 

    // Opdracht 2 graphics 
    stoplicht.Teken(e.Graphics); 

    // Opdracht 3 graphics 
    voetgangerlicht.Teken(e.Graphics); 
    fietslicht.Teken(e.Graphics); 

    // Opdracht 5 graphics 
    oversteekplaats1.Teken1(e.Graphics); 
    oversteekplaats2.Teken1(e.Graphics); 
    oversteekplaats3.Teken1(e.Graphics); 
    oversteekplaats4.Teken1(e.Graphics); 
    oversteekplaats5.Teken1(e.Graphics); 

    if (voetganger == true) 
    { 
    oversteekplaats4.Teken2(e.Graphics, 120); 
    } 
} 
+3

那么,你有没有尝试运行这段代码,看看它是否你想要做什么? – millimoose

+0

所有按钮点击都会翻转布尔值 – Jonesopolis

+0

使用'Form1.Invalidate()'重新绘制。我认为这就是你想要的。 – MahanGM

回答

0

如果要刷新后按钮的点击图纸只需要调用Invalidate()

private void button1_Click(object sender, EventArgs e) 
{ 
    if (voetganger == false) 
    { 
     voetganger = true; 
    } 
    else if (voetganger == true) 
    { 
     voetganger = false; 
    } 

    this.Invalidate(); 
} 

和为是一点点体贴,我会这样写条件:

private void button1_Click(object sender, EventArgs e) 
{ 
    voetganger = !(voetganger); 
    this.Invalidate(); 
} 
+1

在你的第一个例子中,'voetganger'在退出该方法时将始终为假。第二个'if'语句应该是'else if'。 –

+0

@JamesT好点,我第一次没有注意到。 – MahanGM

相关问题