PDA

View Full Version : مقاله: فارسی تکست باکس



mostafah110
شنبه 26 فروردین 1391, 01:33 صبح
سلام...

من همیشه یه مشکل خیلی بزرگی داشتم و اون هم نمایش صحیح فارسی توی تکست باکس بود، مثلا اگه قرار بود یه چیز فارسی بنویسم با توجه به کیبورد های مختلف مشکل ی و ک فارسی منو خیلی اذیت می کرد، یا این که اگه قرار بود که داخل تکس باکس یه مبلغ درج بشه، باید به صورت ۳ رقم ۳ رقم جدا می شد و همون لحظه به کاربر نشون می داد.

بالاخره خودم دست به کار شدم و یه کنترل تکست باکس برای حل همین دوتا مشکلی که بالا ذکر کردم، نوشتم، یه مقداری هم روی زیباییش کار کردم و خداروشکر ازش راضی هستم... خوشبختانه خیلی از مشکلات من رو حل کرد... قصد دارم کاملترش کنم، به همین خاطر اونو اینجا آپلود کردم تابقیه دوستان ببینن و اگه نظری برای بهتر کردنش دارن بدن.

یه مقدار هم درموردش توضیح میدم:
من برای تبدیل ی و ک عربی به فارسی از تابع مشهور زیر استفاده کردم:

public static string convertArabicToFarsiString(string letter)
{
string output = letter;
output = output.Replace("ې", "ی");
output = output.Replace("ي", "ی");
output = output.Replace("ك", "ک");

return output;
}


همین طور برای ۳ رقم ۳ رقم جدا کردن هم از تابع زیر، که به نظرم احتیاج به توضیح نداره و یه سری پردازش روی رشته است:


public static string numberToMoney(string input, bool rightToLeft = true)
{
input = moneyToNumber(input);
double inp_int = Convert.ToDouble(input);
bool containDot = false;
if (inp_int < 0)
{
input = input.Remove(0, 1);
}
string[] s = { "", "" };
if (input.Contains('.'))
{
s = input.Split('.');
input = s[0];
containDot = true;
}
string outputT = "";
string output = "";
int j = 0;
for (int i = input.Length - 1; i >= 0; i--)
{
outputT += input[i];
if (j % 3 == 2 && j < input.Length - 1)
{
outputT += ",";
}
j++;
}
for (int i = outputT.Length - 1; i >= 0; i--)
{
output += outputT[i];
}
if (containDot)
output += "." + s[1];
if (inp_int < 0)
{
if (rightToLeft)
output = output.Insert(output.Length, "-");
else
output = output.Insert(0, "-");
}
return output;
}


خیلی ممنونم از شما دوستانی که خیلی از مشکلات من رو تو همین سایت حل کردید و دوست داشتم این یه هدیه ای به همه رفقا باشه (البته اون قدرها هم آش دهن سوزی نیست)

هم سورس farsiTextBox و هم یه نمونه برنامه ازش رو توی ضمیمه ها گذاشتم