PDA

View Full Version : مشکل در فارسی کردن اعداد TextBox



Arezoo62
سه شنبه 05 اردیبهشت 1391, 19:28 عصر
سوال دوستان من دارم همراه پروژه ای که انجام میدم سی شارپ یاد می گیرم
من از این کد برای فارسی کردن اعداد استفاده می کنم
اما وقتی می خواهم برای TextBox هم فعالش کنم نمی دونم چه جوریه
public string FarsiNumber(string str)
{
string s = "";
int i;
char[] ch = str.ToCharArray();
foreach (char c in ch)
{
if (char.IsDigit(c))
{
i = (int)char.GetNumericValue(c) + 1776;
s += ((char)i).ToString();
}
else
s += c.ToString();
}
return s;
}


اگه بشه بگید راهی هست که بذارمش تو کلاس تا لازم نباشه هی بنویسمش

علیرضا حسن زاده
سه شنبه 05 اردیبهشت 1391, 19:45 عصر
شما می تونید بدون کد هم اعداد رو فارسی نشون بدین و مزیتی که این روش داره اینه که هنگام جستجو هم مشکلی برای اعداد پیش نمیاد و می تنوید به راحتی جستجو کنید
برای این کار از کنترل پانل قسمت Regional &..... باز کنید در ویندوز 7 در تب اول قسمت Additional setting رو باز کنید و کاراکتر های فارسی رو برای اعداد انتخاب کنید و Use native Digit رو هم روی National قرار بدین
برای ویندوز XP هم تو همون پنجره قسمت Customize رو انتخاب کنید و تنظیمات مربوطه رو انجام بدین
با استفاده از این روش در تمام قسمت های ویندوز اعداد به صورتفارسی نمایش داده میشه نیازی هم به کد نداره

esrafilhashemi
سه شنبه 05 اردیبهشت 1391, 19:48 عصر
سلام
میتونید از این کامپوننت استفاده کنی
کافیست این کامپوننت رو به تولباکست اضافه کنی
کلی امکانات داره

یا حق

aliBahramy
سه شنبه 05 اردیبهشت 1391, 19:49 عصر
سلام دوست عزیز اولا برای قارسی کردن اعداد نیازی به ای تابع نیست ، شما میتونید از فونت های فارسی استفاده کنید، مثلا BNazanin
اینجوری اعداد را به صورت فارسی نشون میده. ولی اگر میخواید از تابع بالا استفاده کنید می تونید اون تابع را توی رویداد TextChanged تکست باکس خودتون صدا برنید.
مثلا :

private void textBoxX1_TextChanged(object sender, EventArgs e)
{
FarsiNumber(s)
}
}

amirrr3
سه شنبه 05 اردیبهشت 1391, 19:50 عصر
دوستان من وقتی فرمم رو می سازم همون اول کار righttoleft رو true می کنم و بعد هرجایی که تایپ می کنم فارسی تایپ می کنه و اعداد رو هم فارسی نمایش میده (واسه تکست باکس و لیبل)
این روش بهتر نیست؟

Arezoo62
سه شنبه 05 اردیبهشت 1391, 19:55 عصر
سلام دوست عزیز اولا برای قارسی کردن اعداد نیازی به ای تابع نیست ، شما میتونید از فونت های فارسی استفاده کنید، مثلا BNazanin
اینجوری اعداد را به صورت فارسی نشون میده. ولی اگر میخواید از تابع بالا استفاده کنید می تونید اون تابع را توی رویداد TextChanged تکست باکس خودتون صدا برنید.
مثلا :

private void textBoxX1_TextChanged(object sender, EventArgs e)
{
FarsiNumber(s)
}
}
ممنونم
در پاسخ به دوستان (من می خواهم تو کامپیوترهای کاربرهامم فارسی نشون بده)
ببخشید اینی که گفتید و s رو نمیشناسه
نمیشه گذاشتش تو کلاس

(در مورد اون کامپونت نمی دونم چه جوری باید ازش استفاده کنم و اددش کنم

aliBahramy
سه شنبه 05 اردیبهشت 1391, 20:09 عصر
ممنونم
در پاسخ به دوستان (من می خواهم تو کامپیوترهای کاربرهامم فارسی نشون بده)
ببخشید اینی که گفتید و s رو نمیشناسه
نمیشه گذاشتش تو کلاس

(در مورد اون کامپونت نمی دونم چه جوری باید ازش استفاده کنم و اددش کنم

دوست عزیز اون فونت را میتونید توی کامپیوترهای دیگر هم بزارید، بعد "s" را مثال زدم . "s" رشته ورودی تابع شماست

Arezoo62
سه شنبه 05 اردیبهشت 1391, 20:13 عصر
به s
این کد
FarsiNumber(s)
ایراد میگیره

gwbasic
سه شنبه 05 اردیبهشت 1391, 20:47 عصر
سوال دوستان من دارم همراه پروژه ای که انجام میدم سی شارپ یاد می گیرم
من از این کد برای فارسی کردن اعداد استفاده می کنم
اما وقتی می خواهم برای TextBox هم فعالش کنم نمی دونم چه جوریه
public string FarsiNumber(string str)
{
string s = "";
int i;
char[] ch = str.ToCharArray();
foreach (char c in ch)
{
if (char.IsDigit(c))
{
i = (int)char.GetNumericValue(c) + 1776;
s += ((char)i).ToString();
}
else
s += c.ToString();
}
return s;
}


اگه بشه بگید راهی هست که بذارمش تو کلاس تا لازم نباشه هی بنویسمش

برای شروع برنامه نویسی انجام پروژه راه درستی نیست چون مطالب رو سطحی یاد می گیرید. در درجه اول مبانی رو به صورت جدی کار کنید وگرنه در آینده دست و پای شما رو می بنده

در مورد سوالتون تغییر کاراکتر رو پیشنهاد نمی کنم بهتره همون روش دوستمون گفتم تغییر Regoin an language‌رو بکار ببرید اما به جهت تمرین می تونید کد زیر رو در رویداد KeyPress مربوط تکس باکس بنویسید


private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsDigit(e.KeyChar))
e.KeyChar = Convert.ToChar((int)e.KeyChar + 1728);
}