2016-03-03 40 views
0

我有一張圖表,上面有不同列表上的線條。 我添加了幾個複選框,並使用if語句來檢查複選框是否被單擊。像這樣:使用複選框刪除折線圖上的線

public Form1() 
{   
    InitializeComponent(); 
    CreateGraph(); 
    this.Text = "HRM File Analyser"; 

    if (hrCheck.Checked) 
    { 
     drawHR(); 
     chart1.Update(); 
    } 
    else if (!hrCheck.Checked) 
    { 
     chart1.Series["Heart Rate"].Points.Clear(); 
     chart1.Update(); 
    } 
} 

但是,即使在調用update方法後,根本沒有任何變化。

任何人有任何想法?

+0

其他條件是否正常工作?你能顯示drawHR()的內容嗎? – Bobby

+0

另外,這些表單上是否聲明瞭這些複選框?如果是這樣,你不能在表單的構造函數的條件表達式中使用它們的檢查狀態。你會想爲複選框添加一個檢查過的事件處理程序,並將你的條件代碼放在那裏。 – Bobby

回答

0

您向我們展示的代碼的第一個問題是,這似乎是交互式的,但是一切(我們看到)在啓動時只發生一次。

  • 相反,你應該在代碼的CheckChanged事件Checkbox的! (你可以通過雙擊設計器中的複選框..)

  • 接下來我建議不要清除,即刪除的所有數據。相反,只需禁用該系列。現在您可以關閉或打開該系列。

  • 複選框檢查邏輯也被誇大;一張支票就足夠了!

因此,新的和改進的版本是這樣的:

public Form1() 
{   
    InitializeComponent(); 
    CreateGraph(); 
    this.Text = "HRM File Analyser"; 
    hrCheck_CheckedChanged(null, null); // set initial state 
    .. 
} 

private void hrCheck_CheckedChanged(object sender, EventArgs e) 
{ 
    chart1.Series["Heart Rate"].Enabled = hrCheck.Checked; 
} 

如果您沒有通過雙擊創建它,不要忘了hook up的事件!