اخواني لدي تكست بوكس تظهر به نتيجة حسايبة من ضرب او جمع او غيره اريد التحكم بعد الارقام العشرية بعد الفاصلة حسب حاجتي من خلالNmeric UpDown فعند تغيير الرقم فيه بتحدد عدد الارقام بعد الفاصلةوكما في الصورة التالية علما اني استخدم فيوال بيسك 2010
14-01-18, 03:35 PM (آخر تعديل لهذه المشاركة : 14-01-18, 03:35 PM {2} بواسطة عبد العزيز البسكري.)
(14-01-18, 10:19 AM)طالب برمجة كتب : توجد خاصية اسمها DecimalPlaces حدد فيها عدد الأرقام العشرية بعد الفاصلة
السّلام عليكم و رحمة الله و بركاته
بارك الله فيك و لك و جزاك خير الجزاء أخي الكريم " طالب برمجة " لما تبذله من جهد كبير في سبيل مساعدة و تنوير درب المبتدئين أمثالي ..
بعد إذن صاحب الموضوع ..
في سياق نفس الموضوع .. لو سمحت و تكرّمت ..
1 - أين أجد الخاصيّة DecimalPlaces
2 - لديَّ هذا الكود لتحديد عدد الأرقام العشرية بعد الفاصلة .. و جدته بالصدفة .. لو سمحت : هل هو صحيح من حيث الكتابة البرمجية
لأنّي أحيانا أجد ( "#,##0.00" ) و أحيانا أجد ( "00.00" ) و أحيانا أجد كتابات أخرى .. فأيهم أصح الله يرضى عليك و على والديك ..
كود :
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
TextBox3.Text = Val(Replace(TextBox1.Text, ",", ".")) / Val(Replace(TextBox2.Text, ",", "."))
TextBox3.Text = Format(Val(TextBox3.Text), "#,##0.00")
End Sub
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
TextBox3.Text = Val(Replace(TextBox1.Text, ",", ".")) / Val(Replace(TextBox2.Text, ",", "."))
TextBox3.Text = Format(Val(TextBox3.Text), "#,##0.00")
End Sub
الخاصية DecimalPlaces هذه تخص الأداة NumericUpDown
نأتي للكود يللي من حضرتك
Replace الموجود في الكود يحذف فواصل الآلاف من أجل تطبيق عملية حسابية
فواصل الألاف يظهرها كود تنسيق عند مغادرة TextBox (غير موجود في الكود الظاهر) وهو
PHP كود :
Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.LostFocus TextBox1.Text = Format(Val(TextBox1.Text), "#,##0.00") End Sub Private Sub TextBox2_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.LostFocus TextBox2.Text = Format(Val(TextBox2.Text), "#,##0.00") End Sub
التنسيق #,##0.00 يحتوي جزئين أحدهم #,## هو لوضع فواصل الآلاف والأخر 0.00 لوضع كسر عشري من رقمين
التنسيق 00.00 هو ليكون الرقم الصحيح لا يقل عن رقمين بحيث رقم واحد سيضع صفر مكان العشرات بالاضافة الى كسر عشري من رقمين ولكن
هناك دالة بديله وهو FormatNumber
وفي الدت نت تستطيع استخدام التنسيق داخل ToString مثل
PHP كود :
Dim n As Double = 1234.5 Dim s As String = n.ToString("#,##0.00") MsgBox(s)
الخلاصة أن التنسيق ستكون نتيجته نصية وهي مخصصة للعرض وليست للعمليات الحسابية
14-01-18, 08:14 PM (آخر تعديل لهذه المشاركة : 14-01-18, 08:42 PM {2} بواسطة طالب برمجة.)
تحتاج فقط لهذا الكود
PHP كود :
Private Sub TextBox1_TextBox2_TextChanged(ByVal sender As Object, ByVal e As EventArgs) _ Handles TextBox1.TextChanged, TextBox2.TextChanged TextBox3.Text = (Val(TextBox1.Text) + Val(TextBox2.Text)).ToString("00.00") End Sub
لا تحتاج لكود Replace(TextBox1.Text, ",", ".") لأنك لم تعمل تنسيق لمربع النص الأول الثاني
تلاحظ أنه تم تحويل النص الى قيمة لكل أداة بواسطة Val
ثم وضعت العملية الحسابية داخل أقواس () لأطبق على الناتج ToString بالتنسيق المطلوب
فالأقواس لها دور في الترتيب المطلوب تنفيذه
لكن كما ذكرت لك أن التنسيق للعرض فقط ولا يستغل ما فيما بعد للعميات الحسابية