2010-02-28 3 views
2

Я обнаружил элементы управления Microsoft .Net с другого места здесь, и до сих пор я их люблю. Для всех, кому это нужно, вот ссылка: http://code.msdn.microsoft.com/mschartMicrosoft Chart Control - Big Red X (плохой) всякий раз, когда я использую финансовые формулы

Я делаю все во время работы, например, создавая серию и шлепая их по области диаграммы. Я могу успешно создать диаграмму свечной, путем подачи его со значением X и 4 значений Y, а при добавлении его к графике, как так:

// "Price" is the .Name property of this series 
chart1.Series.Add(priceseries); 

Он отлично работает. Затем я просмотрел образцы, которые пришли с этим прекрасным контролем финансовых формул. Образец говорит использовать скользящую среднюю формулу (только используя это в качестве примера, я не могу получить любой из них, чтобы работать), код заключается в следующем:

chart1.DataManipulator.FinancialFormula(FinancialFormula.MovingAverage,"5","Input","Simple"); 

Где «5» является период использования , так что это может быть то, что я хочу. «Вход» - это серия источников данных, и «Simple» - это серия выходных данных. Для того, чтобы закрутить это в способ, который работает с моим кодом, я создал кнопку, и сделал это:

private void button1_Click(object sender, EventArgs e) 
    { 
     chart1.DataManipulator.FinancialFormula(FinancialFormula.MovingAverage, "5", "Price", "SMA");  
    } 

просто и красиво, да? Ну, как только я нажимаю на эту кнопку, мой контроль диаграммы отображает большой, красный, несчастный X и НЕ скользящий средний ряд (который я назвал «SMA») на диаграмме каким-либо образом, формой или формой.

Добавляя к вышеуказанному коду, я попытался создать «SMA», я попытался добавить серию «SMA» к диаграмме после выполнения вызова Financialformula, и оба заканчиваются большим средним красным X . Повторяя пример кода, кажется, что единственная строка кода - это все, что необходимо для создания дополнительной серии данных, но я застрял! Это не поможет, что красный X не имеет информации отладки вообще :(

Любые идеи о том, как избавиться от большого X, и отобразить его новую серию данных вместо

Update: Так же, как и тест, я удалил бит о добавлении серии в Chart1, после чего я добавил бит chart1.DataManipulator сразу после него. Как и ожидалось, начальная серия, в которой есть все мои исходные данные, не появляется (потому что я удалил часть добавив его в диаграмму), но когда следующая строка кода использует приложение формулы - нет большого красного X. Нет данных, но код ошибки тоже отсутствует, поэтому я думаю, что это улучшение? Это заставляет меня поверить что существует какая-то проблема с исходным набором данных, к которому я применяю формулу, или что-то вроде что связано с представлением/границами самого элемента управления диаграммой. Если я найду что-нибудь еще на этом треке, я отправлю его как второе обновление.

ответ

3

я обнаружил источник моей проблемы:

priceseries.IsXValueIndexed = true; 

Я сделал это сначала опустить все пустые точки данных (которые были бы в выходные дни в сценарии цен на акции). Когда я изменил значение на false, неожиданно приложение формулы работало нормально. Недостатком является то, что у меня есть пустые места на выходные, где нет данных! Но это еще одна проблема, с которой я могу справиться самостоятельно.

Для любого других, имеющих этой проблемы, обратитесь к этой статье эталонной для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/dd456699(VS.100).aspx

Примечания о группировке данных первым это не шутка. Не опускайте данные!

1

Большой красный X - это элемент управления, который столкнулся с проблемой при запуске/интерпретации формулы и отказался от призрака. Возможно, эта формула была слишком сложной и удобной для управления диаграммой, чтобы справиться с ней ... Возможно, есть более современная версия кода, который снял ограничение. Для этого обязательно должно быть что-то на codeplex.com.

Это может произойти в равной степени во время разработки, при проектировании формы, и к нему привязано управление, несколько свойств, установленных здесь и там, и для получения большого красного X это было обычным явлением, когда элемент управления неверное поведение во время разработки.

Надеюсь, это поможет, С уважением, Tom.

2

Случалось со мной тоже.

При использовании FinancialFormulas (особенно в FinancialFormula.ExponentialMovingAverage) серии ChartType должен быть установлен в SeriesChartType.Line.

В моем коде он был установлен в SeriesChartType.FastLine, и это метало OverflowException из System.Drawing.dll