سؤال

تقريبا نفس مشكلتي مع الرجل في هذا الموضوع:

تحويل تعويم يحتوي على فترة بدلا من الفاصلة؟

حتى أن بلدي

double x = 234.4;
string y = x.ToString();

انا حصلت y == "234,4";

الاسوأ ... Double.Parse("234.4") يلقي استثناء.

لقد كتبت الكثير من التعليمات البرمجية قبل أن يُطلب مني استخدام النقطة بدلاً من الفاصلة، لذلك أفضّل ذلك طريقة ما لتغيير CultureInfo الخاص بي على المستوى العالمي.

هل هناك بعض الإعدادات في المشاريع التي يمكنني القيام بها؟

لقد حاولت:

        Application.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

إنهم نوع من العمل.إنهم يعملون في معظم أجزاء التطبيق، ولكن جميع عناصر التحكم الموجودة في علامات التبويب الخاصة بـ TabControl لا تزال ترغب في استخدام أجهزة الكمبيوتر الخاصة بي Localized CultureInfo.

أي أفكار بشأن كيفية حل هذا؟

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

المحلول 2

بفضل تعليق فلورين ساباو، وجدت الحل، وهو وضعه

        Application.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");

في Main() مباشرة قبل إنشاء النموذج الخاص بي.

الآن لن أضطر إلى تغيير كل ما عندي من .ToString() و Double.Parse() :-) نعم!

نصائح أخرى

يمكنك محاولة استخدام

double.Parse("...", CultureInfo.InvariantCulture)

و

x.ToString(CultureInfo.InvariantCulture)

في أجزاء البرنامج التي تعتبرها إيجابية، يجب أن يكون لديك فترة عشرية بدلاً من الفاصلة أو غيرها من الإعدادات الإقليمية التي تعتمد على الفاصل العشري.

نأمل أن يساعد.

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