PDA

View Full Version : مقاله: تغییر Keyboard.



Keramatifar
شنبه 19 خرداد 1386, 18: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 است که زبان انتخاب شده جاری را تو خودش ذخیره کرده.