فکر کنم کد زیر کارتو راه بندازه یه label بذار رو فرمت و یه textbox تو TextChange کنترل textbox کد زیر رو بذار
if (tbdigit1.Text.Length != 0)
{
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalDigits = 0;
tbdigit1.Text = Int64.Parse(tbdigit1.Text, NumberStyles.AllowThousands).ToString("N", nfi);
tbdigit1.Select(tbdigit1.Text.Length, 0);
label1.Text = numToStr(UInt64.Parse(tbdigit1.Text, NumberStyles.AllowThousands), 1);
}
else
label1.Text = "";
maxlength اون رو هم برابر 23 قرار بده
اینم تابع numtostr
private string numToStr(ulong num, int level)
{
string[][] numstr = new string[][]
{
new string[]{"صفر","یک","دو","سه","چهار","پنج" ,"شش","هفت","هشت","نه"},
new string[]{"ده","یازده","دوازده","سیزده"," چهارده","پانزده","شانزده","هف ده","هیجده","نوزده",
"بیست","سی","چهل","پنجاه","شست"," هفتاد","هشتاد","نود"},
new string[]{"","صد","دویست","سیصد","چهارصد", "پانصد","ششصد","هفتصد","هشتصد", "نهصد"} ,
new string[]{"هزار"},
new string[]{"میلیون"},
new string[]{"میلیارد"},
new string[]{"تریلیون"},
new string[]{"تریلیارد"},
};
switch (level)
{
case 1:
if (num < 10)
return numstr[0][Convert.ToInt32(num)];
else
{
if (num % 100 < 20 && num % 100 > 9)
{
if (num < 20)
return numstr[1][Convert.ToInt32(num % 10)];
else
return numToStr(num / 100, 3) + " و " + numstr[1][Convert.ToInt32(num % 10)];
}
else
return numToStr(num / 10, 2) + ((num % 10 != 0) ? " و " + numstr[0][Convert.ToInt32(num % 10)] : "");
}
case 2:
if (num < 10)
return numstr[1][Convert.ToInt32(num % 10 + 8)];
else
return numToStr(num / 10, 3) + ((num % 10 >= 2) ? " و " + numstr[1][Convert.ToInt32(num % 10 + 8)] : "");
case 3:
if (num < 10)
return numstr[2][Convert.ToInt32(num % 10)];
else
return numToStr(num / 10, 4) + ((num % 10 != 0) ? " و " : "") + numstr[2][Convert.ToInt32(num % 10)];
case 4:
if (num < 1000)
return numToStr(num, 1) + " " + numstr[3][0];
else
return numToStr(num / 1000, 5) + ((Convert.ToInt32(num % 1000) != 0) ? " و " + numToStr(num % 1000, 1) + " " + numstr[3][0] : "");
case 5:
if (num < 1000)
return numToStr(num, 1) + " " + numstr[4][0];
else
return numToStr(num / 1000, 6) + ((Convert.ToInt32(num % 1000) != 0) ? " و " + numToStr(num % 1000, 1) + " " + numstr[4][0] : "");
case 6:
if (num < 1000)
return numToStr(num, 1) + " " + numstr[5][0];
else
return numToStr(num / 1000, 7) + ((Convert.ToInt32(num % 1000) != 0) ? " و " + numToStr(num % 1000, 1) + " " + numstr[5][0] : "");
case 7:
if (num < 1000)
return numToStr(num, 1) + " " + numstr[6][0];
else
return numToStr(num / 1000, 8) + ((Convert.ToInt32(num % 1000) != 0) ? " و " + numToStr(num % 1000, 1) + " " + numstr[6][0] : "");
case 8:
if (num < 1000)
return numToStr(num, 1) + " " + numstr[7][0];
else
return "";
default:
return "";
}
}