PDA

View Full Version : تغییر نکردن Language تکست باکس



PetekDincos
پنج شنبه 23 دی 1389, 15:23 عصر
با سلام
من می خواهم وقتی به یه تکست باکس "InputLanguageManager.InputLanguage="en-us این شد کاربر نتونه این رو تغییر بده

مهدی فرزاد
پنج شنبه 23 دی 1389, 17:44 عصر
سلام
شما میتونید با استفاده از توابع API مانع درستری و تغییر زبان بشید اما من یک ترفند رو پیشنهاد میکنم
در رویدادPerviewKeyDown تکس باکس چک کنید اگه زبان تغییر کرده بود مجدد اون رو "InputLanguageManager.InputLanguage="en-us قرار بده
در این صورت هیچ وقت کار بر نمیتونه توی اون تکس باکس فارسی تایپ کنه

PetekDincos
پنج شنبه 23 دی 1389, 20:34 عصر
با سلام
چطور می شه این کار را انجام داد چون من هر کاری کردم وقتی فارسی تایپ می کنم اصلا حتی یه MessageBox تو رویداد PreviewKeyDown قرار می دم که فقط یه متنی رو نشون بده حتی اون رو هم نشون نمی ده با تشکر

مهدی فرزاد
پنج شنبه 23 دی 1389, 21:18 عصر
private void textBox1_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (InputLanguageManager.GetInputLanguage(textBox1).T oString() == "fa-IR")
MessageBox.Show("ok");
}

رضا عربلو
پنج شنبه 23 دی 1389, 21:34 عصر
محدود کردن به اینکه فرضاً همیشه انگلیسی تایپ کنه کار چندان جالبی نیست. روش های مختلفی برای دور زدن آن وجود دارد در برابر copy/paste توسط منو و یا hot key ها می خواهید چکار کنید و یا روش های ابدائی دیگر......
بجای اینکار بهتر است اعتبار سنجی کنید (validate) یعنی قبل از ذخیره بررسی کنید که آیا کاربر مقادیر درست را تایپ نموده است و یا خیر و پیغام مناسب به کاربر نمایش دهید.

PetekDincos
جمعه 24 دی 1389, 08:46 صبح
با سلام
من می خوام یه تکست باکس داشته باشم که فقط اعداد رو بشه درش تایپ کرد و قبلا این کدی که آقای مهدی فرزاد قرار داده بودند


if (Convert.ToInt32(e.Key) < 34 || (Convert.ToInt32(e.Key) > 43 && Convert.ToInt32(e.Key) < 74) || Convert.ToInt32(e.Key) > 83)
{
e.Handled = true;
}

فارسی درست کار نمی کنه و من خود Convert.ToInt32(e.key) رو برای حروف فارسی امتحان کردم تا محدودش رو بدست بیارم چیزی نشون نداد و من میخوام زبان سیستم عامل هر زبانی باشه فقط اعداد تایپ بشه با تشکر

sunn789
جمعه 24 دی 1389, 09:19 صبح
سلام
یه راه حل دیگه هم دارید اینکه یه class بنویسی که از textBox ارث ببره و بعد اون رو به صورت dll به پروژه تون اضافه کنید و هر زمان خواستید به عنوان یه textBox که فقط عدد قبول میکنه به پروژه اضافه کنید

PetekDincos
جمعه 24 دی 1389, 09:45 صبح
سلام
یه راه حل دیگه هم دارید اینکه یه class بنویسی که از textBox ارث ببره و بعد اون رو به صورت dll به پروژه تون اضافه کنید و هر زمان خواستید به عنوان یه textBox که فقط عدد قبول میکنه به پروژه اضافه کنید

با سلام
دارم همین کار رو می کنم

مهدی فرزاد
جمعه 24 دی 1389, 12:08 عصر
فارسی درست کار نمی کنه و من خود Convert.ToInt32(e.key) رو برای حروف فارسی امتحان کردم تا محدودش رو بدست بیارم چیزی نشون نداد و من میخوام زبان سیستم عامل هر زبانی باشه فقط اعداد تایپ بشه با تشکر

سلام
من الان اینو برای فارسی هم تست کردم و کار میکنه در رویداد KeyDown یک تکس باکس که InputLanguageManager.InputLanguage="fa-IR"l، بود اینو امتحان کردم و مشکلی نداشت ،میشه بیشتر توضیح بدید

PetekDincos
جمعه 24 دی 1389, 17:17 عصر
با سلام
65061
اگر ملاحظه کنید در این عکس معلومه و من می گم حتی زمانیکه زبان سیستم عاملم(Win 7) فارسیه در رویداد KeyDown حتی یه MessageBox که یه نوشته رو نشون می ده در موقع تایپ کاراکتر درون تکست باکس نشون نمی ده و نمی دونم از چیه با تشکر

مهدی فرزاد
جمعه 24 دی 1389, 21:30 عصر
سلام
باید مشکل از جای دیگه باشه چون من الان روی 5 سیستم مختلف تست کردم و در تمام آنها درست بود و با هر زبانی کار میکرد شما هم روی یک سیستم دیگه تست کنید این مشکل خیلی عجیبه که چرا روی سیستم شما این رفتار رو داره!!!!!!
خواهشن دوستان دیگه هم اون نمونه ای رو که من پیوست کردم تست کنن باید فقط عدد قبول کنه چه در حالت فارسی چه انگلیسی
مرسی