لا يمكن تحويل الصفر إلى int32 من مربع النص
-
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)) ؛