PDA

View Full Version : جلوگیری از تغییر زبان توسط کاربر



f_pakzad
پنج شنبه 31 مرداد 1387, 18:58 عصر
زبان فارسی را به عنوان پیش فرض در رویداد enter برای textbox انتخاب کردم.
حال اگر کاربر زبان را توسط صفحه کلید انگلیسی کند میواهم توسط برنامه تشخیص داده شود و دوباره به زبان فارسی برگردد چگونه این کار را انجام دهم؟

behzadk
پنج شنبه 31 مرداد 1387, 20:01 عصر
برای تغییر زبان کلید alt+ shift فشرده میشه
تو keydown بررسی کن ببین اگر این دو بود فارسی بکن
کد تغییر زبان


System.Globalization.CultureInfo fa = new System.Globalization.CultureInfo("fa-ir");
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(fa);

رضا جاسبی
پنج شنبه 31 مرداد 1387, 23:25 عصر
نه لزوما فقط دو کلید alt و shift . ممکنه که کاربر با ماوس از Language Bar پایین صفحه این کار رو بکنه. فکر می کنم اگر خیلی مهم باشه که نوشته ها فارسی بشن فکر کنم بهتره که Edit در TextBox رو خودت به عهده بگیری. یعنی مثلا چه حرف 'J' ، چه 'j' و چه حرف 'ت' زده شد شما همون ت رو می خواهی. پس کد کلید زده شده رو بگیر و خودت پردازش کن. اگر کد مربوط به این کلید (پنجمین حرف از سمت راست صفحه کلید) بود یعنی ت و دیگه نیازی به نگرانی زبان ورودی نداری.

behzadk
جمعه 01 شهریور 1387, 10:22 صبح
و برای تکمیل گفتم می تونی توی activate هم این کد رو بنویسی
از مدیریت textbox خیلی راحت تر است

f_pakzad
جمعه 01 شهریور 1387, 16:10 عصر
برای تغییر زبان کلید alt+ shift فشرده میشه
تو keydown بررسی کن ببین اگر این دو بود فارسی بکن
کد تغییر زبان


System.Globalization.CultureInfo fa = new System.Globalization.CultureInfo("fa-ir");
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(fa);

برای اینکه بفهمم چه کلیدی فشرده شده باید چه طوری کدشو بنویسم؟

shytonak
جمعه 01 شهریور 1387, 19:25 عصر
دوست عزیز ی اینجا یه مشکلی هست اینکه وقتی زبان رو عوض میکنی اولین کلمه رو انگلیسی تایپ میکنه دوباره فارسی میشه.

f_pakzad
شنبه 02 شهریور 1387, 11:32 صبح
میشه بگید چه طور بفهمم کلیدی فشرده شده یا نه؟؟؟؟؟؟؟

shytonak
شنبه 02 شهریور 1387, 12:18 عصر
دوست عزیز منظورت چیه؟بیشتر توضیح بده

f_pakzad
شنبه 02 شهریور 1387, 20:02 عصر
دوست عزیز منظورت چیه؟بیشتر توضیح بده
همینکه بخوام بفهمم alt+ shift توسط کلربر فشرده شده یا نه؟باید چه طور کدش رو بنویسم؟

Sajjad.Aghapour
شنبه 02 شهریور 1387, 20:16 عصر
در رویداد keyDown این کد رو بنویسید


if (e.Alt && e.Shift)
{
//command
}

f_pakzad
دوشنبه 04 شهریور 1387, 23:09 عصر
در رویداد keyDown این کد رو بنویسید


if (e.Alt && e.Shift)
{
//command
}



با and نشد اما با or درست شد.
البته مشکل نوشته شدن حرف اول به صورت انگلیسی هم چنان باقیست.!!

shytonak
پنج شنبه 07 شهریور 1387, 02:54 صبح
دوستان کسی نمی خواد دیگه تو این تاپیک شرکت کنه مشکل هنوز کاملا حل نشده حرف اول مشکل داره.چیکار کنیم.

RED-C0DE
پنج شنبه 07 شهریور 1387, 07:23 صبح
بهترین کار این بود که یک TextBox سفارشی خودت می ساختی که از TextBox ارث می بره و برای اون همه کارایی که لازم داری می کردی تا دیگه نیازی نباشه در رویدادها و بخشهای مختلف رویدادهای مختلف بنویسی و درگیر بشی...!

اگرم با ساخت TextBox سفارشی مشکل داری بگو...

----

دوستان کسی نمی خواد دیگه تو این تاپیک شرکت کنه مشکل هنوز کاملا حل نشده حرف اول مشکل داره.چیکار کنیم.

برنامه ای که نوشتین رو اینجا بذارین تا روش صحبت کنیم...

f_pakzad
پنج شنبه 07 شهریور 1387, 21:25 عصر
بهترین کار این بود که یک TextBox سفارشی خودت می ساختی که از TextBox ارث می بره و برای اون همه کارایی که لازم داری می کردی تا دیگه نیازی نباشه در رویدادها و بخشهای مختلف رویدادهای مختلف بنویسی و درگیر بشی...!

اگرم با ساخت TextBox سفارشی مشکل داری بگو...

----


برنامه ای که نوشتین رو اینجا بذارین تا روش صحبت کنیم...

این هم برنامه.....

Sajjad.Aghapour
پنج شنبه 07 شهریور 1387, 23:53 عصر
سلام.ببین اینو برات نوشتم.مشکلتو حل میکنه.......

corona
جمعه 08 شهریور 1387, 01:30 صبح
بهترین کار این بود که یک TextBox سفارشی خودت می ساختی که از TextBox ارث می بره و برای اون همه کارایی که لازم داری می کردی تا دیگه نیازی نباشه در رویدادها و بخشهای مختلف رویدادهای مختلف بنویسی و درگیر بشی...!

اگرم با ساخت TextBox سفارشی مشکل داری بگو...

----..
red -code اگه میشه لطف کن و روش ساخت یک تکست باکس سفارسی رو با یک مثال گو .ممنون

Sajjad.Aghapour
جمعه 08 شهریور 1387, 01:50 صبح
red -code اگه میشه لطف کن و روش ساخت یک تکست باکس سفارسی رو با یک مثال گو .ممنو

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

RED-C0DE
جمعه 08 شهریور 1387, 11:15 صبح
red -code اگه میشه لطف کن و روش ساخت یک تکست باکس سفارسی رو با یک مثال گو .ممنون

همونطور که sajjadlove گفت سورسی که گذاشته همونیه که جواب این تاپیک هستش و یک textBox سفارشی هم حساب می شه...اگه سورس رو نگاه کنین که یک پروژه ClassLibrary هستش (خروجی پروژه، یک فایل dll هست که در واقع TextBox مورد نظر هست) که اگه Class1 > View Code رو بذنین کد مورد نظر رو مشاهده می کنین به اینصورت :



public class FaTextBox : TextBox
{
protected override void OnEnter(EventArgs e)
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR"));
base.OnEnter(e);
}
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (InputLanguage.CurrentInputLanguage.LayoutName == "US")
{
e.Handled = true;
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo("fa-IR"));
this.Text.Remove(this.Text.Length - 1, 1);
this.Select(this.Text.Length, 0);
}
base.OnKeyPress(e);
}
}


همونطور که می بینید کلاسی نوشته شده به نام FaTextBox که از کلاس System.Windows.Forms.TextBox ارث برده و البته دو رویداد این کلاس رو برای خودش Override کرده...
هیچ چیز خاص دیگه ای هم نداره...