2011-02-28 26 views
4

請理解,我知道有關於此問題的其他線索,但我的需求不同。向MS圖表控件添加滾動條C#

基本上我之前見過的人說,實現與MSChart的滾動條,他們使用

.Size = ...

.View = ...

但,這會使滾動條自動更新,並且此滾動條包含一個按鈕,單擊該按鈕會導致條消失,使圖表顯示所有數據,並且無法在不重新啓動應用程序的情況下將滾動條帶回到圖表。

所以我問,請問有沒有一種方法可以在我的Chart的X軸上合併水平滾動條?我需要這樣才能查看我的圖表數據,以100個第二塊爲單位。

即0-100,然後點擊滾動條會把我帶到100-200塊。

先謝謝各位傢伙!!!!!在C#中也

回答

23

這裏IM的編碼是你所需要的例子:
(嘗試一下,只需創建一個窗體中添加一個MSChart的,並調用下面的方法)

private void FillChart() 
{ 
    int blockSize = 100; 

    // generates random data (i.e. 30 * blockSize random numbers) 
    Random rand = new Random(); 
    var valuesArray = Enumerable.Range(0, blockSize * 30).Select(x => rand.Next(1, 10)).ToArray(); 

    // clear the chart 
    chart1.Series.Clear(); 

    // fill the chart 
    var series = chart1.Series.Add("My Series"); 
    series.ChartType = SeriesChartType.Line; 
    series.XValueType = ChartValueType.Int32; 
    for (int i = 0; i < valuesArray.Length; i++) 
     series.Points.AddXY(i, valuesArray[i]); 
    var chartArea = chart1.ChartAreas[series.ChartArea]; 

    // set view range to [0,max] 
    chartArea.AxisX.Minimum = 0; 
    chartArea.AxisX.Maximum = valuesArray.Length; 

    // enable autoscroll 
    chartArea.CursorX.AutoScroll = true; 

    // let's zoom to [0,blockSize] (e.g. [0,100]) 
    chartArea.AxisX.ScaleView.Zoomable = true; 
    chartArea.AxisX.ScaleView.SizeType = DateTimeIntervalType.Number; 
    int position = 0; 
    int size = blockSize; 
    chartArea.AxisX.ScaleView.Zoom(position, size); 

    // disable zoom-reset button (only scrollbar's arrows are available) 
    chartArea.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll; 

    // set scrollbar small change to blockSize (e.g. 100) 
    chartArea.AxisX.ScaleView.SmallScrollSize = blockSize; 
} 

快照:

mschart zooming

+0

@digEmAll,快照鏈接斷開。 – 2011-03-01 07:59:33

+0

@Devendra:這不是一個鏈接,但下面有一個圖像...也許你的瀏覽器沒有加載圖像...? – digEmAll 2011-03-01 08:23:50

+0

@digEmAll,圖像不可見。我試圖檢查鏈接(通過編輯答案),但即使這是無效的。 – 2011-03-01 08:30:43