Keramatifar
شنبه 19 خرداد 1386, 19:23 عصر
تغییر Keyboard کاری که قبلا با استفاده از تابع API به نام ActivateKeyboardLayout انجام می دادیم.
وب دست به کار میشیم و یه پروژه از نوع Windows Form می سازیم. فقط یه چیزی بگم اونم اینه که تو کدهامون سعی می کنیم اسامی کلاسها و ... را بطور کامل بنویسیم.
Property های فرم را به شکل زیر تغییر بدید:
Name -> frmMain
FormBorderStyle -> FixedSingle
MinimizeBox -> False
MaximizeBox -> False
StartupPosition -> CenterScreen
Text -> Change Keyboard Layout
حالا یه ListBox روی فرم بذارید و Property های اون رو به شکل زیر تغییر بدید:
Name -> lstLanguages
خوب یه Button هم برای خروج روی فرم قرار بدید و Property های اونم تغییر بدید:
Name -> btnExit
Text -> E&xit
خوب حالا باید دست به آچار بشیم:
کد زیر را برای Event Handler (گرداننده رویداد) btnExit_Click بنویسید:
System.Windows.Forms.Application.Exit();
حالا کد زیر را برای frmMain_Load بنویسید:
foreach(InputLanguage Language in InputLanguage.InstalledInputLanguages)
lstLanguages.Items.Add(Language.Culture.EnglishNam e);
InstalledInputLanguage یه Property از کلاس InputLangue است که در حقیقت یه Collection است و زبانهای نصب شده رو تو خودش داره.
نکته:
InputLanguage -> System.Windows.Forms.InputLanguage
خوب حالا اگه برنامه را اجرا کنید، لیست زبانهایی که روی سیستمتون نصبه در ListBox نمایش داده میشه.
حالا اگه بخوایم زبان فعال رو عوض کنیم باید کد زیر را اضافه کنیم. سناریوی ما به این شکله که وقتی روی یکی از زبانها توی ListBox دبل کلیک می کنیم زبان انتخاب شده عوض میشه.
private void lstLanguages_DoubleClick(object sender, EventArgs e)
{
string myLanguage = "";
if (lstLanguages.SelectedItem != null)
{
myLanguage = lstLanguages.SelectedItem.ToString();
foreach (InputLanguage Language in
InputLanguage.InstalledInputLanguages)
if (Language.Culture.EnglishName == myLanguage)
InputLanguage.CurrentInputLanguage = Language;
}
}
با استفاده از یه حلقه foreach نام تک تک زبانهای نصب شده رو با نام زبان انتخاب شده مقایسه می کنیم اگه یکی بود همون رو به CurrentInputLanguage ست می کنیم. CurrentInputLanguage یه Property از کلاس InputLanguage است که زبان انتخاب شده جاری را تو خودش ذخیره کرده.
وب دست به کار میشیم و یه پروژه از نوع Windows Form می سازیم. فقط یه چیزی بگم اونم اینه که تو کدهامون سعی می کنیم اسامی کلاسها و ... را بطور کامل بنویسیم.
Property های فرم را به شکل زیر تغییر بدید:
Name -> frmMain
FormBorderStyle -> FixedSingle
MinimizeBox -> False
MaximizeBox -> False
StartupPosition -> CenterScreen
Text -> Change Keyboard Layout
حالا یه ListBox روی فرم بذارید و Property های اون رو به شکل زیر تغییر بدید:
Name -> lstLanguages
خوب یه Button هم برای خروج روی فرم قرار بدید و Property های اونم تغییر بدید:
Name -> btnExit
Text -> E&xit
خوب حالا باید دست به آچار بشیم:
کد زیر را برای Event Handler (گرداننده رویداد) btnExit_Click بنویسید:
System.Windows.Forms.Application.Exit();
حالا کد زیر را برای frmMain_Load بنویسید:
foreach(InputLanguage Language in InputLanguage.InstalledInputLanguages)
lstLanguages.Items.Add(Language.Culture.EnglishNam e);
InstalledInputLanguage یه Property از کلاس InputLangue است که در حقیقت یه Collection است و زبانهای نصب شده رو تو خودش داره.
نکته:
InputLanguage -> System.Windows.Forms.InputLanguage
خوب حالا اگه برنامه را اجرا کنید، لیست زبانهایی که روی سیستمتون نصبه در ListBox نمایش داده میشه.
حالا اگه بخوایم زبان فعال رو عوض کنیم باید کد زیر را اضافه کنیم. سناریوی ما به این شکله که وقتی روی یکی از زبانها توی ListBox دبل کلیک می کنیم زبان انتخاب شده عوض میشه.
private void lstLanguages_DoubleClick(object sender, EventArgs e)
{
string myLanguage = "";
if (lstLanguages.SelectedItem != null)
{
myLanguage = lstLanguages.SelectedItem.ToString();
foreach (InputLanguage Language in
InputLanguage.InstalledInputLanguages)
if (Language.Culture.EnglishName == myLanguage)
InputLanguage.CurrentInputLanguage = Language;
}
}
با استفاده از یه حلقه foreach نام تک تک زبانهای نصب شده رو با نام زبان انتخاب شده مقایسه می کنیم اگه یکی بود همون رو به CurrentInputLanguage ست می کنیم. CurrentInputLanguage یه Property از کلاس InputLanguage است که زبان انتخاب شده جاری را تو خودش ذخیره کرده.