2013-10-31 71 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

相關問題