زبان فارسی را به عنوان پیش فرض در رویداد enter برای textbox انتخاب کردم.
حال اگر کاربر زبان را توسط صفحه کلید انگلیسی کند میواهم توسط برنامه تشخیص داده شود و دوباره به زبان فارسی برگردد چگونه این کار را انجام دهم؟
زبان فارسی را به عنوان پیش فرض در رویداد enter برای textbox انتخاب کردم.
حال اگر کاربر زبان را توسط صفحه کلید انگلیسی کند میواهم توسط برنامه تشخیص داده شود و دوباره به زبان فارسی برگردد چگونه این کار را انجام دهم؟
برای تغییر زبان کلید alt+ shift فشرده میشه
تو keydown بررسی کن ببین اگر این دو بود فارسی بکن
کد تغییر زبان
System.Globalization.CultureInfo fa = new System.Globalization.CultureInfo("fa-ir");
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(fa);
نه لزوما فقط دو کلید alt و shift . ممکنه که کاربر با ماوس از Language Bar پایین صفحه این کار رو بکنه. فکر می کنم اگر خیلی مهم باشه که نوشته ها فارسی بشن فکر کنم بهتره که Edit در TextBox رو خودت به عهده بگیری. یعنی مثلا چه حرف 'J' ، چه 'j' و چه حرف 'ت' زده شد شما همون ت رو می خواهی. پس کد کلید زده شده رو بگیر و خودت پردازش کن. اگر کد مربوط به این کلید (پنجمین حرف از سمت راست صفحه کلید) بود یعنی ت و دیگه نیازی به نگرانی زبان ورودی نداری.
و برای تکمیل گفتم می تونی توی activate هم این کد رو بنویسی
از مدیریت textbox خیلی راحت تر است
دوست عزیز ی اینجا یه مشکلی هست اینکه وقتی زبان رو عوض میکنی اولین کلمه رو انگلیسی تایپ میکنه دوباره فارسی میشه.
میشه بگید چه طور بفهمم کلیدی فشرده شده یا نه؟؟؟؟؟؟؟
دوست عزیز منظورت چیه؟بیشتر توضیح بده
در رویداد keyDown این کد رو بنویسید
if (e.Alt && e.Shift)
{
//command
}
Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."
دوستان کسی نمی خواد دیگه تو این تاپیک شرکت کنه مشکل هنوز کاملا حل نشده حرف اول مشکل داره.چیکار کنیم.
بهترین کار این بود که یک TextBox سفارشی خودت می ساختی که از TextBox ارث می بره و برای اون همه کارایی که لازم داری می کردی تا دیگه نیازی نباشه در رویدادها و بخشهای مختلف رویدادهای مختلف بنویسی و درگیر بشی...!
اگرم با ساخت TextBox سفارشی مشکل داری بگو...
----
برنامه ای که نوشتین رو اینجا بذارین تا روش صحبت کنیم...دوستان کسی نمی خواد دیگه تو این تاپیک شرکت کنه مشکل هنوز کاملا حل نشده حرف اول مشکل داره.چیکار کنیم.
سلام.ببین اینو برات نوشتم.مشکلتو حل میکنه.......
Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."
دوست عزیز سورسی که گذاشتم به تکست باکس سفارشیه.می تونی ببینیش...red -code اگه میشه لطف کن و روش ساخت یک تکست باکس سفارسی رو با یک مثال گو .ممنو
Close your eyes, take a deep breath, click your heels three times, and say, "There's no better thing than Inversion of Control and Dependency Injection, generic specialization, the decorator pattern, chains of responsibilities, and extensible software."
همونطور که sajjadlove گفت سورسی که گذاشته همونیه که جواب این تاپیک هستش و یک textBox سفارشی هم حساب می شه...اگه سورس رو نگاه کنین که یک پروژه ClassLibrary هستش (خروجی پروژه، یک فایل dll هست که در واقع TextBox مورد نظر هست) که اگه Class1 > View Code رو بذنین کد مورد نظر رو مشاهده می کنین به اینصورت :red -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 کرده...
هیچ چیز خاص دیگه ای هم نداره...