المشاركات : 34
المواضيع 21
الإنتساب : Nov 2023
السمعة :
0
الشكر: 2
تم شكره 7 مرات في 4 مشاركات
السلام عليكم
لمن يقدر يساعدني في الاتي:
عندي textbox1 يتم ادخال أرقام مثل 7500
اريد اجعل قيمة textbox2 تساوي الأرقام بالحروف = سبعة الالف وخمسمائة ريال فقط
حيث أن الكود داخل حدث changed لل textbox1
الله يعطيكم العافية
وشكراً
المشاركات : 6
المواضيع 0
الإنتساب : Nov 2023
السمعة :
0
الشكر: 0
تم شكره 1 مرات في 1 مشاركات
ذلك في حدث TextChanged لـ TextBox1:
vb
Copy code
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
' احصل على القيمة المدخلة في TextBox1
Dim inputValue As String = TextBox1.Text.Trim()
' تحويل الرقم إلى كلمة
Dim wordValue As String = ConvertNumberToWords(inputValue)
' عرض الناتج في TextBox2
TextBox2.Text = wordValue
End Sub
Private Function ConvertNumberToWords(number As String) As String
' تحويل الرقم إلى كلمة
' يمكنك استخدام أي خوارزمية تحويل رقم إلى كلمة تفضل بها
' يمكنك البحث عن خوارزميات متوفرة على الإنترنت أو كتابة خاصة بك
' هنا نستخدم خوارزمية بسيطة لأغراض التوضيح
Dim units() As String = {"", "واحد", "اثنان", "ثلاثة", "أربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة"}
Dim teens() As String = {"عشرة", "إحدى عشر", "اثنا عشر", "ثلاثة عشر", "أربعة عشر", "خمسة عشر", "ستة عشر", "سبعة عشر", "ثمانية عشر", "تسعة عشر"}
Dim tens() As String = {"", "عشرون", "ثلاثون", "أربعون", "خمسون", "ستون", "سبعون", "ثمانون", "تسعون"}
Dim hundreds() As String = {"", "مئة", "مئتان", "ثلاثمئة", "أربعمئة", "خمسمئة", "ستمئة", "سبعمئة", "ثمانمئة", "تسعمئة"}
' إزالة الأصفار الزائدة من الرقم
number = number.TrimStart("0"c)
' التحقق من أن الرقم ليس فارغًا
If String.IsNullOrEmpty(number) Then
Return "صفر"
End If
' التحقق من صحة الرقم
Dim numericValue As Integer
If Not Integer.TryParse(number, numericValue) Then
Return "خطأ في الرقم"
End If
' حالة الرقم صفر
If numericValue = 0 Then
Return "صفر"
End If
' تحويل الرقم إلى كلمة
Dim words As New StringBuilder()
' تحويل الجزء الثلاثي إلى كلمة
Dim triplets() As Integer = {0, 0, 0}
Dim tripletCounter As Integer = 0
Do While numericValue > 0
triplets(tripletCounter) = numericValue Mod 1000
numericValue \= 1000
tripletCounter += 1
Loop
For i As Integer = tripletCounter - 1 To 0 Step -1
Dim triplet As Integer = triplets(i)
If triplet > 0 Then
If words.Length > 0 Then
words.Append(" و ")
End If
If triplet >= 100 Then
words.Append(hundreds(triplet \ 100)).Append(" ")
triplet \= 100
End If
If triplet >= 10 AndAlso triplet <= 19 Then
words.Append(teens(triplet - 10))
Else
words.Append(tens(triplet \ 10)).Append(" ")
triplet \= 10
If triplet > 0 Then
words.Append(units(triplet))
End If
End If
If i > 0 Then
words.Append(" ").Append("ألف"c)
End If
End If
Next
Return words.ToString().Trim()
End Function