PDA

View Full Version : مشکل در تشخیص زبان کیبرد



ArianProg
چهارشنبه 23 آذر 1390, 16:22 عصر
با سلام من تو تشخیص زبان جاری کیبرد مشکل دارم من از کدهای زیر استفاده کردم اما به جای انکه زبان جاری را فارسی نشان بده همش میگه انگلیسیه.!!!

If InputLanguage.CurrentInputLanguage.Culture.Display Name & ControlChars.Cr = "Farsi" Then
MsgBox("farsi")
Else
MsgBox("english")

End If


من چیکارکنم؟

Hybrid
چهارشنبه 23 آذر 1390, 16:45 عصر
سلام دوست عزیز احتما میدم میخواید با استفاده از کدنویسی زبان کیبوردتون رو تغییر بدین اگه اینطوره مراحل زیر رو برین تا به جوابتون برسین..

1)یه دکمه و یه تکست باکس را روی فرمتون قرار بدین..

2)در رویداد کلیک دکمه کد زیر رو که براتون نوشتم کپی کنید..


Dim a As String
a = System.Windows.Forms.InputLanguage.CurrentInputLan guage.LayoutName

If a = "Farsi" Then
Dim inp As New System.Globalization.CultureInfo("en-us")

InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(inp)
TextBox1.Focus()

TextBox1.RightToLeft = Windows.Forms.RightToLeft.No

End If

If a = "US" Then
Dim inp As New System.Globalization.CultureInfo("FA-IR")

InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(inp)

TextBox1.Focus()
TextBox1.RightToLeft = Windows.Forms.RightToLeft.Yes
End If

موفق باشین

سوداگر
چهارشنبه 23 آذر 1390, 16:50 عصر
مقدار ControlChars.Cr خالیه و باعث میشه شرطت غلط بشه.
کدت رو از کجا گرفتی؟

ArianProg
چهارشنبه 23 آذر 1390, 17:43 عصر
سلام دوست عزیز احتما میدم میخواید با استفاده از کدنویسی زبان کیبوردتون رو تغییر بدین اگه اینطوره مراحل زیر رو برین تا به جوابتون برسین..

1)یه دکمه و یه تکست باکس را روی فرمتون قرار بدین..

2)در رویداد کلیک دکمه کد زیر رو که براتون نوشتم کپی کنید..


Dim a As String
a = System.Windows.Forms.InputLanguage.CurrentInputLan guage.LayoutName

If a = "Farsi" Then
Dim inp As New System.Globalization.CultureInfo("en-us")

InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(inp)
TextBox1.Focus()

TextBox1.RightToLeft = Windows.Forms.RightToLeft.No

End If

If a = "US" Then
Dim inp As New System.Globalization.CultureInfo("FA-IR")

InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(inp)

TextBox1.Focus()
TextBox1.RightToLeft = Windows.Forms.RightToLeft.Yes
End If

موفق باشین


ممنون دوست من که جواب دادین اما ببین سوال من خیلی ساده تر از این هاست !
مثلا من یه قسمتی از کد شما رو تو Form_load میذارم . اما سوال من اینه که چرا همش مقدار برگشتی a چه کیبرد از قبل رو فارسی باشه چه انگلیسی همش میشه US ؟!!

Dim a As String

a = System.Windows.Forms.InputLanguage.CurrentInputLan guage.LayoutName
msgbox(a)

ArianProg
چهارشنبه 23 آذر 1390, 17:45 عصر
مقدار ControlChars.Cr خالیه و باعث میشه شرطت غلط بشه.
کدت رو از کجا گرفتی؟

ممنون که جواب دادین از msdn.microsoft.com گرفتم.

Hybrid
چهارشنبه 23 آذر 1390, 17:53 عصر
دوست عزیز مطمئنی همش میگه Us ?!!! من همین الان امتحان کردم هر دو تا رو نشون میداد یعنی هم Us و هم Farsi !!!!

من احتمال میدم رو کامپیوتر شما farsi نصب نیست یا با زدن Alt +Shift زبان کیبوردتون تغییر نمیکنه..

موفق باشین

ArianProg
چهارشنبه 23 آذر 1390, 18:02 عصر
دوست عزیز مطمئنی همش میگه Us ?!!! من همین الان امتحان کردم هر دو تا رو نشون میداد یعنی هم Us و هم Farsi !!!!

من احتمال میدم رو کامپیوتر شما farsi نصب نیست یا با زدن Alt +Shift زبان کیبوردتون تغییر نمیکنه..

موفق باشین

باور کن نصبه من خودم هم دارم شاخ در میارم.!!
من روی ویندوز xp sp3 و روی seven sp1 امتحان کردم رو هر دوتاش هم فارسی نصبه و با Alt+shift هم زبان عوض میشه و راحت فارسی تایپ میکنم. اما نمیدونم چرا اینطوریه؟!!!

حالا من چی کار کنم ؟؟؟!!!!!!!!!!

ArianProg
چهارشنبه 23 آذر 1390, 20:40 عصر
من حتی روی یک ویندوز دیگه هم تست کردم کسی میدونه چرا برا من جواب نمیده اما برا ایشون میگن جواب داده؟

آخه منطقی نیست !

سوداگر
چهارشنبه 23 آذر 1390, 22:33 عصر
Dim a As String
a = System.Windows.Forms.InputLanguage.CurrentInputLan guage.LayoutName
If a = "Persian" Then
MsgBox("farsi")
ElseIf a = "US" Then
MsgBox("english")
Else
MsgBox("Others")
End If

تست شده است(در رویداد Key_press)

ArianProg
پنج شنبه 24 آذر 1390, 01:33 صبح
Dim a As String
a = System.Windows.Forms.InputLanguage.CurrentInputLan guage.LayoutName
If a = "Persian" Then
MsgBox("farsi")
ElseIf a = "US" Then
MsgBox("english")
Else
MsgBox("Others")
End If

تست شده است(در رویداد Key_press)

ممنون دوست من والا منم از نظر منطقی در کدهای شما و دوستان مشکلی نمی بینم .میدونم مساله خیلی سادس اما چیزی که کلافه ام کرده اینه که مشکل کار کجاست ؟
اگه بخواین من از تمام تست هایی که روی 3 تا ویندوز سالم انجام دادم فیلم بگیرم و بزارم براتون.

سوداگر
پنج شنبه 24 آذر 1390, 01:58 صبح
ممنون دوست من والا منم از نظر منطقی در کدهای شما و دوستان مشکلی نمی بینم .میدونم مساله خیلی سادس اما چیزی که کلافه ام کرده اینه که مشکل کار کجاست ؟
اگه بخواین من از تمام تست هایی که روی 3 تا ویندوز سالم انجام دادم فیلم بگیرم و بزارم براتون.
لازم به فیلم گرفتن نیست!
شما یک پروژه ویندوزی جدید ایجاد کنید(1)
یک عدد textbox روی فرمتان بکشید(2)
از لیست eventهای تکست باکس، keypress رو دوبار کلیک کنید(3)
کد بالا رو کپی کرده و مطابق کد های بالا اصلاحش کنید! (4)
برنامه را اجرا کنید(5)
اینم برنامه خودم:

ArianProg
پنج شنبه 24 آذر 1390, 10:22 صبح
ممنون دوست من .
من فایل شما رو تست کردم جواب داد و به نظرم فهمیدم مشکل از کجاست .

من همزمان ورژن های 2005 و 2008 و 2010 پروفشنال ویژوال استودیو رو نصب کردم و دارم .

برنامه شما با ورژن 2010 نوشته شده بود ولی برنامه من با 2008.

فکر کنم این ورژن ها با هم تداخل پیدا کردن. برم 2005 و 2008 رو آنیستال کنم.

ممنون.