PDA

View Full Version : تغییر زبان برای همیشه در یک تکست باکس



saed2006
پنج شنبه 23 اردیبهشت 1389, 13:10 عصر
برای اینکه تکست باکس همیشه حروف انگلیسی قبول کنه و با shift alt هم نشه تغیرش داد چه کاری باید کرد؟

Netsky
پنج شنبه 23 اردیبهشت 1389, 13:19 عصر
سلام جيگر طلا .........
بايد اين كد رو توي يكي از رويدادهاي تكست باكست بزاري :


System.Globalization.CultureInfo English = new System.Globalization.CultureInfo("en-US");
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(English);
بعدشم فكر كنم بايد يه تايمر بزاري كه چك كنه اگه Alt و Shift فشرده شد ، دوباره زبون تكست باكس رو انگليسي كنه .
البته اين راهي بود كه به ذهن من رسيد . شايد دوستان راه حل بهتري داشته باشن ..........

saied_genius
پنج شنبه 23 اردیبهشت 1389, 18:12 عصر
مي توان از regular expression استفاده کرد ، که براي حروف انگليسي عبارت است از:
^[A-Za-z]*$

hojjatshariffam
پنج شنبه 23 اردیبهشت 1389, 19:09 عصر
مي توان از regular expression استفاده کرد ، که براي حروف انگليسي عبارت است از:
^[A-Za-z]*$
دوست عزیز میشه توضیح بدین که چطور میشه در عبارات منظم در این موارد استفاده کرد؟
برام جالب شده

hojjatshariffam
پنج شنبه 23 اردیبهشت 1389, 19:13 عصر
برای اینکه تکست باکس همیشه حروف انگلیسی قبول کنه و با shift alt هم نشه تغیرش داد چه کاری باید کرد؟
برای تغییر زبان می تونی از این کد ها استفاده کنی



class ChangeLanguage
{
public static Boolean English()
{
Boolean Flag = false;
InputLanguage PersionLanguage;
foreach (InputLanguage lang in InputLanguage.InstalledInputLanguages)
{
if (lang.Culture.EnglishName == "English (United States)")
{
PersionLanguage = lang;
InputLanguage.CurrentInputLanguage = PersionLanguage;
Flag = true;
}
}
return Flag;
}

public static Boolean Persian()
{
Boolean Flag=false;
InputLanguage PersionLanguage;
foreach (InputLanguage lang in InputLanguage.InstalledInputLanguages)
{
if (lang.Culture.EnglishName == "Persian (Iran)")
{
PersionLanguage = lang;
InputLanguage.CurrentInputLanguage = PersionLanguage;
Flag = true;
}
}
return Flag;
}
}


ولی برای اینکه دیگه زبان عوض نشه باید در رویداد تکت چنج هر بار چک کنی که اگه زبان عوض شده دوباره تغییرش بدی
و کی پرس رو هم جوری بنویس که غیر از حروف انگلیسی چیزی قبول نکنه

می تونی دکمه های آلت شیفت رو هم ببندی
ولی استفاده از عبارات منظم رو بلد نیستم

saied_genius
پنج شنبه 23 اردیبهشت 1389, 20:27 عصر
سلام
ببخشيد دير شد ، سرم شلوغ بود.

اين هم مثال کامل:


using System.Text.RegularExpressions;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
System.Globalization.CultureInfo English = new System.Globalization.CultureInfo("en-US");
Regex expression = new Regex(@"^[A-Za-z]*$");

public Form1()
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(English);
//
InitializeComponent();
}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (InputLanguage.CurrentInputLanguage != InputLanguage.FromCulture(English))
{
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(English);
}
if (!expression.IsMatch(e.KeyChar.ToString()))
{
e.Handled = true;
}
else
{
e.Handled = false;
}

}
}
}


در اين حالت حتي اگر کيبورد ، تغيير زبان دهد ، به انگليسي تبديل مي شود و امکان تايپ هيچگونه حروفي غير از انگليسي ندارد.

موفق باشيد.