2017-10-19 1 views
1

두 개의 버튼이있는 차트 컨트롤이 하나 있습니다. 초침 촛대 차트를 사용합니다. 두 번째 호출 막 대형 차트. 하나만 호출하면 모든 것이 정상입니다. 그러나 막 대형 차트의 단추를 클릭하면 X 축 값은 촛대 차트에서 가져옵니다. 막대 차트 X 축은 0-15 사이 여야합니다. 잘못된 X 축 값을 보여주는 MS 차트

그들이 보는 방법 : formload에 https://imgur.com/a/IICYh

촛대 차트는 first.Everything 여전히 괜찮로드됩니다. 막 대형 차트의 닫기/열기 버튼을 클릭하면 촛대 형 차트의 X 축 값이 왼쪽에 표시됩니다.

닫기/열기를 눌렀을 때 촛대 차트의 차트 단추를 클릭하면 어떻게됩니까? Y 축 값이 누락되었습니다. 차트를 호출

방법 :

public void CandleStickChartMain() 
    { 
     // clear the chart 
     if (ChartCandle.Series.Count > 0) this.ChartCandle.Series[0].Points.Clear(); 
     this.ChartCandle.Series.Clear(); 
     this.ChartCandle.Titles.Clear(); 


     //Clear Grid 
     ChartCandle.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineWidth = 0; 
     ChartCandle.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineWidth = 0; 

     //Series 
     ChartCandle.Series.Add("Date"); 
     ChartCandle.Series["Date"].YValuesPerPoint = 4; 
     ChartCandle.Series["Date"].XValueMember = "Day"; 
     ChartCandle.Series["Date"].YValueMembers = "High,Low,Open,Close"; 
     ChartCandle.Series["Date"].XValueType = ChartValueType.DateTime; 
     ChartCandle.Series["Date"].CustomProperties = "PriceDownColor=Red,PriceUpColor=Green"; 
     ChartCandle.Series["Date"]["OpenCloseStyle"] = "Triangle"; 
     ChartCandle.Series["Date"]["ShowOpenClose"] = "Both"; 
     ChartCandle.DataManipulator.IsStartFromFirst = true; 
     ChartCandle.Series["Date"].ChartType = SeriesChartType.Candlestick; 

     //Axis Y Minimum 
     ChartCandle.ChartAreas["ChartArea1"].AxisY.Minimum = Open.Min() - (Open.Min()/50); 

     //Data Binding 
     ChartCandle.DataSource = ChartDataTable; 
     ChartCandle.DataBind(); 

    } 


public void BarChart() 
    { 

     // clear the chart 
     if (ChartCandle.Series.Count > 0) this.ChartCandle.Series[0].Points.Clear(); 
     this.ChartCandle.Series.Clear(); 
     this.ChartCandle.Titles.Clear(); 

     // Set palette 
     this.ChartCandle.Palette = ChartColorPalette.Excel; 

     // Set title 
     this.ChartCandle.Titles.Add("Price Data Open/Close"); 

     //Add series 
     //Series Open 
     var seriesOpen = ChartCandle.Series.Add("Open"); 
     for (int i = 0; i < Open.Length; i++) 
     { 

      seriesOpen.Points.Add(Open[i]); 
     } 
     //Series Close 
     var SeriesClose = ChartCandle.Series.Add("Close"); 
     for (int i = 0; i < Close.Length; i++) 
     { 
      SeriesClose.Points.Add(Close[i]); 
     } 

     var chartAreaOpenClose = ChartCandle.ChartAreas[seriesOpen.ChartArea]; 

     // Zoom and scroll options 
     // set view range to [0,max] 
     chartAreaOpenClose.AxisX.Minimum = 0; 
     chartAreaOpenClose.AxisX.Maximum = Open.Length + 1; 

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

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

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

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

     // additional 
     ChartCandle.ChartAreas[0].AxisY.IsStartedFromZero = false; 

    } 
+0

나를 위해 ChartArea에'촛대'또는'주식'유형 도표를 추가하면'Axis.IsStartedFromZero = false' 행동이 깨집니다. – NekojiruSou

답변

-1

나는 당신이 당신의 데이터를 바인딩 해제 표시되지 않습니다. 아마도 ChartCandle.DataSource = null을 설정해야할까요?

업데이트 : 귀하의 문제는 쉽게 두 개의 서로 다른 ChartAreas 사용에 의해 해결된다

:

chart1.ChartAreas.Clear(); 
chart1.ChartAreas.Add("CandleChart"); 

chart1.Series.Clear(); 
chart1.Titles.Clear(); 

나는 각 방법의 시작이 추가 및 방법 내의 각 ChartArea 참조 그냥 올바른을 참조

이름 :

chart1.ChartAreas["CandleChart"].AxisX.MajorGrid.LineWidth = 0; 
chart1.ChartAreas["CandleChart"].AxisY.MajorGrid.LineWidth = 0; //etc. 

예상했다. 단추는 그래프를 적절하게 전환합니다.

+0

'ChartCandle.DataSource = null;'ChartCandle.DataBind();를 'BarChart()'에 추가했지만 여전히 동일합니다. –

+0

@ B-Z 데이터가 없어 코드를 테스트 할 수 없습니다. 데이터를 포함 할 수 있습니까? –

+0

데이터는 poloniex의 api에서 가져옵니다. [예제 데이터] (https://poloni.com/public?command=returnChartData¤cyPair=BTC_XMR&start=1507633439&end=9999999999&period=14400) –

관련 문제