PDA

View Full Version : محدود کردن Textbox به متون فارسی



Royce_Da
شنبه 29 خرداد 1389, 12:51 عصر
سلام

بهترین راه برای اینکه textbox رو طوری محدود کنیم که کاربر فقط بتونه داخلش فارسی تایپ کنه چیست؟

من خودم از این روش استفاده میکنم:


string s = @"اآبپتثجچهخدذرزژسشصضطظعغفق کگلمنوهیءؤيةۀ،؛,()!؟_-+=*/%&$#^@';:\()[]{}<>~|";
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((s.IndexOf(e.KeyChar) == -1))
{
e.Handled = true;
}
}

کسی روش بهتری پیشنهاد میکنه ؟

mmd2009
شنبه 29 خرداد 1389, 12:59 عصر
با سلام

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

فقط یک خط کد داره

Iran58
شنبه 29 خرداد 1389, 13:33 عصر
با سلام

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

فقط یک خط کد داره
سلام
باتشكر
اگرزحمت بگشيدوكدهم قرار بدهيد خيلي خوب مي شود
و يك مشكل حروف انگليسي را مي تان كپي كرد براي حل اين مشكل چكار بايد كرد

Royce_Da
شنبه 29 خرداد 1389, 13:33 عصر
با سلام

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

فقط یک خط کد داره

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

NIK
شنبه 29 خرداد 1389, 13:38 عصر
با سلام

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

فقط یک خط کد داره

سلام
خیلی خوبه ولی اگه امکان داره سورسش رو هم بزار.
متشکرم

mohitlog
شنبه 29 خرداد 1389, 14:32 عصر
using System.Globalization;

در لود صفحه


InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("fa-IR"));

در keyPress تکست باکس


e.Handled = !char.IsLetter(e.KeyChar) && e.KeyChar != (char)Keys.Back && e.KeyChar != (char)Keys.Space;

mmd2009
شنبه 29 خرداد 1389, 14:43 عصر
دوستان عزیز

کار خاصی نکردم و فقط یک تایمر ایجاد کردم و فعالش کردم و اینترول اون رو 1 کردم و کد زیر رو داخاش paste کردم




InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new System.Globalization.CultureInfo("FA"));

ASKaffash
شنبه 29 خرداد 1389, 15:06 عصر
با سلام

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

فقط یک خط کد داره
سلام
شما از یک Timer که هر یک میلی ثانیه کیبورد را فارسی می کند استفاده میکنید به نظرم روش خوبی نیست چون Ctr+C را نمی توانید مدیریت کنید در ضمن سربار دارد

mmd2009
شنبه 29 خرداد 1389, 16:07 عصر
با سلام

ارخ حق با شماست روش خوبی نبود ولیا گر بخواهیم از روش دیگه هم استفاده بکنیم اینم جواب میده




public void farsi()
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("fa-IR"));
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
farsi();
}
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
farsi();
}
private void Form1_Load(object sender, EventArgs e)
{
farsi();
}




البته مشکل اینجاست که موقعی PASTE کردن میشه انگلیسی رو هم تو TEXTBOX قرار داده و این چیزی نیست که ما می خواهیم
به نظر من قبل از paste کردن باید مقدار رو بفرستیم داخل یک متغیر و بعدش پردازش بشه و اگر فوت انگلیسی داخلش نبود قرارش بدیم تو تکست باکس


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

sevda_niki
شنبه 29 خرداد 1389, 19:57 عصر
با سلام
کد زیر را در زیر کد
InitializeComponent();تایپ کنید.خودش رو تکست باکس عمل می کنه
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.Cul tureInfo.CreateSpecificCulture("fa-IR"));

Royce_Da
یک شنبه 30 خرداد 1389, 04:16 صبح
تشکر میکنم از راهنمایی های شما اساتید .
اما من میخوام کاری کنم که کاربر اصلا نتونه تو textbox لاتین تایپ کنه . این کد هایی که شما لطف کردید گزاشتید فقط زبان رو تغییر میده .

ASKaffash
یک شنبه 30 خرداد 1389, 08:04 صبح
با سلام

ارخ حق با شماست روش خوبی نبود ولیا گر بخواهیم از روش دیگه هم استفاده بکنیم اینم جواب میده




public void farsi()
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(new CultureInfo("fa-IR"));
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
farsi();
}
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
farsi();
}
private void Form1_Load(object sender, EventArgs e)
{
farsi();
}




البته مشکل اینجاست که موقعی PASTE کردن میشه انگلیسی رو هم تو TEXTBOX قرار داده و این چیزی نیست که ما می خواهیم
به نظر من قبل از paste کردن باید مقدار رو بفرستیم داخل یک متغیر و بعدش پردازش بشه و اگر فوت انگلیسی داخلش نبود قرارش بدیم تو تکست باکس


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

سلام
این روش هم برای کلیک سمت راست موس فریب می خورد (انتخاب paste)

mmd2009
یک شنبه 30 خرداد 1389, 11:20 صبح
میدونم دوست عزیزز

اخرش جملمم که گفتم

به نظر من نباید اجازه paste رو بدیم که این کار هم غیرمعقوله