PDA

View Full Version : سوال: چگونه اعداد در Title Bar یک فرم به فارسی نوشته شود؟! لطفا راهنمایی کنید.



Parham.D
چهارشنبه 18 آبان 1390, 05:55 صبح
سلام دوستان.

نمیدونستم چه چیزی باید جستجو میکردم! واسه همین بدون جستجو پست ایجاد کردم، شرمنده.

سوالم خیلی ساده است. اگر بخواهم توی Title Bar یک فرم، فارسی بنویسم و میان این نوشته فارسی، عدد باشه فرم عدد به انگلیسی هست نه فارسی! یعنی اینطوری مثلا " چهارشنبه 18 آبان ". میخوام این 18 فارسی نوشته بشه. چه راه حلی داره که بدون تغییر تنظیمات سیستم این کار انجام شود؟

خیلی ممنون

AmirHarirbafan
چهارشنبه 18 آبان 1390, 09:38 صبح
به صورت پیشفرض چون تایتل فرم ها با فونت پیشفرض ویندوز نمایش داده میشوند. پس اعداد فارسی نخواهند بود.
شما یا باید در محدوده ی non-client به صورت دستی با یک فونت فارسی paint کنید یا اینکه اعداد را از فرم انگلیسی به فرم فارسی تبدیل کنید
من یه تابع برای شما آماده کردم که میتونید به راحتی از اون استفاده کنید. البته من سی شارپ کار کردم و وی بی دات نت بلد نیستم. اما فکر نکنم مشکلی در تبدیلش براتون پیش بیاد.




public static string Encode(string text)
{
if (string.IsNullOrEmpty(text))
{
return string.Empty;
}
StringBuilder str = new StringBuilder();
foreach (char ch in text)
{
switch (ch)
{
case '0':
str.Append('۰');
break;

case '1':
str.Append( '۱');
break;

case '2':
str.Append('۲');
break;

case '3':
str.Append( '۳');
break;

case '4':
str.Append( '۴');
break;

case '5':
str.Append( '۵');
break;

case '6':
str.Append('۶');
break;

case '7':
str.Append( '۷');
break;

case '8':
str.Append('۸');
break;

case '9':
str.Append( '۹');
break;

default:
str.Append( ch);
break;
}
}
return str.ToString();
}




نحوه استفاده هم ساده است.

this.Text = Encode(" چهارشنبه 18 آبان");


موفق باشید.

asif1358
چهارشنبه 18 آبان 1390, 18:59 عصر
سلام
از این تابع می تونید استفاده کنید


Private Function FarsiNumber(ByVal sIn As String) As String
Dim sOut As String = ""
Dim ch() As Char = sIn.ToCharArray
For Each cha In ch
If IsNumeric(cha) Then
sOut += CChar(ChrW(1728 + CInt(AscW(cha))))
Else
sOut += cha.ToString
End If
Next
Return sOut
End Function