لا يمكن تحويل الصفر إلى int32 من مربع النص

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

  •  23-09-2019
  •  | 
  •  

سؤال

لدي الرمز التالي للقيام ببعض التحقق من صحة بسيطة للغاية لمربع نص

    if(txtInStock.Text.Length == 0)
        txtInStock.Text = Convert.ToString(0);

    if (txtInStock.Text.Length == 0)
        txtOnOrder.Text = Convert.ToString(0);

    int inStockAmt = Convert.ToInt32(txtInStock.Text);
    int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);

هذا يعمل بشكل جيد عندما يكون النص! = 0 ، ولكن عندما يحصل النص == 0 ، أحصل على formatexception قائلاً إن السلسلة ليست من التنسيق المناسب. كيف يمكنني تصحيح هذا؟

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

المحلول

مشكلتك هنا:

if (txtInStock.Text.Length == 0)
    txtOnOrder.Text = Convert.ToString(0);

أنت تتحقق من طول مربع نص واحد ووضع نص آخر. تغييره إلى هذا:

if (txtOnOrder.Text.Length == 0)
    txtOnOrder.Text = Convert.ToString(0);

أيضا ، هل هناك سبب استخدامك Convert.ToString(0) بدلا من مجرد "0"؟ لا أوصي بشكل خاص باستخدام هذا النهج للتحقق من صحة البيانات ، ولكن هذا يجب أن يصحح المشكلة.

نصائح أخرى

نظرًا لأنه لا يمكنك التأكد من أن مستخدم مربع النص الخاص بك سوف يكتب عددًا صحيحًا صحيحًا ، فإنني أوصي بالاستخدام int32.tryparse () بدلا من تحويل. toint32. وبالتالي ، ستتمكن من التعامل بسهولة مع حالات الخطأ.

هل سيفعل هذا الرمز؟

    if(txtInStock.Text.Length == 0)
        txtInStock.Text = "0";

    if (txtInStock.Text.Length == 0)
        txtOnOrder.Text = "0";

    int inStockAmt = Convert.ToInt32(txtInStock.Text);
    int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);

أتمنى أن يساعد هذا ، مع أطيب التحيات ، توم.

هذه طريقة بسيطة للتعامل مع مربع نص فارغ

if( string.IsNullOrEmpty( txtInStock.Text ))
    txtInStock.Text = "0";

if( string.IsNullOrEmpty( txtOnOrder.Text ))
    txtOnOrder.Text = "0";

int inStockAmt = Convert.ToInt32(txtInStock.Text);
int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);

أود أيضًا أن أحفظ قيم مربع النص على متغيرات Temp ثم أقوم بالمقارنة ما لم تكن ترغب في فرض 0 في مربع النص عندما يكون فارغًا.

int instockamt = convert.toint32 (string.isnullorempty (txtinstock.text)؟ 0: int.parse (txtinstock.text)) ؛

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