Microsoft Chart Control - Big Red X (سيء) عندما أستخدم الصيغ المالية

StackOverflow https://stackoverflow.com/questions/2352215

سؤال

لقد اكتشفت عناصر التحكم في الرسوم البيانية الخاصة بـ Microsoft.Net من خلال مقال آخر هنا، وأنا أحبها حتى الآن.ولمن يحتاجها هذا هو الرابط:http://code.msdn.microsoft.com/mschart

أفعل كل شيء أثناء وقت التشغيل، مثل إنشاء سلسلة ووضعها على منطقة الرسم البياني.يمكنني إنشاء مخطط شمعدان بنجاح، من خلال تزويده بقيمة X وقيم 4 Y، وعندما أقوم بإضافته إلى المخطط كما يلي:

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

إنه يعمل بشكل رائع.بعد ذلك، قمت بدراسة العينات التي جاءت مع هذا التحكم الرائع في المعادلات المالية.يقول النموذج أنه يجب استخدام صيغة المتوسط ​​المتحرك (فقط باستخدام هذا كمثال، لا يمكنني تشغيل أي منها)، الرمز هو هذا:

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

حيث "5" هي الفترة التي يجب استخدامها، لذلك يمكن أن يكون ما أريد.يبدو أن "الإدخال" هو سلسلة مصدر البيانات، و"البسيط" هو سلسلة الإخراج.لتدوير هذا بطريقة تعمل مع الكود الخاص بي، قمت بإنشاء زر وفعلت هذا:

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

لطيفة وبسيطة، أليس كذلك؟حسنا، بمجرد النقر على هذا الزر، يعرض التحكم في الرسم البياني الخاص بي علامة X كبيرة حمراء وغير سعيدة وليس سلسلة المتوسط ​​المتحرك (التي أسميتها "SMA") على الرسم البياني بأي شكل من الأشكال أو الشكل.

إضافة إلى الكود أعلاه، حاولت إنشاء سلسلة "SMA" مسبقًا، وحاولت إضافة سلسلة "SMA" إلى الرسم البياني بعد إجراء استدعاء الصيغة المالية، وكلاهما ينتهي بمتوسط ​​X الأحمر الكبير.من خلال مراجعة نموذج التعليمات البرمجية مرة أخرى، يبدو أن سطرًا واحدًا من التعليمات البرمجية هو كل ما هو مطلوب لإنشاء سلسلة إضافية من البيانات، لكنني عالق!من غير المفيد أن علامة X الحمراء لا تحتوي على معلومات تصحيح على الإطلاق :(

هل لديك أي أفكار حول كيفية التخلص من علامة X الكبيرة، وجعلها تعرض سلسلة البيانات الجديدة بدلاً من ذلك؟

تحديث:كاختبار فقط، قمت بإزالة الجزء الخاص بإضافة السلسلة إلى Chart1، ثم أضفت الجزء Chart1.DataManipulator مباشرة بعد ذلك.كما هو متوقع، لا تظهر السلسلة الأولية التي تحتوي على جميع بياناتي الأولية (لأنني أزلت الجزء الذي قمت بإضافته إلى المخطط)، ولكن عندما يقوم السطر التالي من التعليمات البرمجية بتطبيق الصيغة - لا توجد علامة X حمراء كبيرة.لا توجد بيانات معروضة، ولكن لا يوجد رمز خطأ أيضًا - لذا أعتقد أن هذا يعد تحسنًا؟يقودني هذا إلى الاعتقاد بأن هناك مشكلة من نوع ما إما في مجموعة البيانات الأولية التي أطبق الصيغة عليها، أو في شيء يتعلق بعرض/حدود التحكم في المخطط نفسه.إذا وجدت أي شيء آخر على هذا المسار، سأقوم بنشره كتحديث ثانٍ.

هل كانت مفيدة؟

المحلول

لقد اكتشفت مصدر مشكلتي:

priceseries.IsXValueIndexed = true;

لقد فعلت ذلك في البداية لحذف أي نقاط بيانات فارغة (والتي ستكون عطلات نهاية الأسبوع في سيناريو سعر السهم).عندما قمت بتغيير القيمة إلى خطأ، فجأة أصبح تطبيق الصيغة يعمل بشكل جيد.الجانب السلبي هو أن لدي أماكن فارغة لتواريخ عطلة نهاية الأسبوع حيث لا توجد بيانات!لكن هذه مشكلة أخرى يمكنني حلها بمفردي.

بالنسبة لأي شخص آخر يواجه هذه المشكلة، راجع هذه المقالة المرجعية للحصول على معلومات إضافية:http://msdn.microsoft.com/en-us/library/dd456699(VS.100).aspx

الملاحظة حول تجميع بياناتك أولاً ليست مزحة.لا تحذف أي نقاط بيانات!

نصائح أخرى

حدث لي أيضا.

أثناء استخدام FinancialFormulas (FinancialFormula.ExponentialMovingAverage على وجه الخصوص) يجب تعيين سلسلة ChartType إلى SeriesChartType.Line.

في الكود الخاص بي تم تعيينه على SeriesChartType.FastLine وكان هذا يؤدي إلى طرح OverflowException من System.Drawing.dll

علامة X الحمراء الكبيرة هي عنصر التحكم الذي واجه مشكلة في تشغيل/تفسير الصيغة وتخلى عن الشبح.ربما كانت الصيغة معقدة للغاية وعملية بحيث لم يتمكن عنصر التحكم في المخطط من التعامل معها...ربما، هناك إصدار أحدث من التعليمات البرمجية الذي أدى إلى رفع التقييد.لا بد أن يكون هناك شيء ما codeplex.com لهذا.

يمكن أن يحدث هذا بشكل متساوٍ في وقت التصميم أيضًا، عند تصميم نموذج، وسحب عنصر التحكم إليه، يتم تعيين بعض الخصائص هنا وهناك وللحصول على علامة X حمراء كبيرة، كان هذا أمرًا شائعًا عندما يسيء عنصر التحكم التصرف في وقت التصميم أيضًا.

آمل أن يساعد هذا ، مع خالص تحياتي توم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top