PDA

View Full Version : آموزش: دسترسی به کلیدهای ترکیبی در داخل فرم



araz_pashazadeh
پنج شنبه 27 مرداد 1390, 17:54 عصر
با عرض سلام خدمت دوستان.
من می خوام وقتی فرم بالا امد کنترل کنم ببینم کابر کدام کلید را فشار داد ویا از کدام کلبد کنترلی استفاده کرده و من برحسب نیاز کار مناسبی انجام بدم.
برای این کار رخداد خاصی وجود داره ؟
چطوری می تمنم به کلیدهای کنترلی در فرم که توسط کاربر فشار داده شده دسترسی پیدا کرد؟

morteza271
پنج شنبه 27 مرداد 1390, 18:28 عصر
در رویداد KeDown فرمتون میتونید از کدهای زیر استفاده کنید:
برای کلیدی که زده شده :

e.KeyCode
برای کد اسکی کلید زده شده :

e.KeyValue

این هم یک نمونه از این رویداد :
if (e.KeyCode == Keys.Delete)
Delete();
else if (e.KeyCode == Keys.Escape)
this.Close();
موفق باشید

Legend M.A.R
پنج شنبه 27 مرداد 1390, 18:46 عصر
private void frm_MainForm_KeyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.Alt:
...
break;
...
}
}

cccccccccc
پنج شنبه 27 مرداد 1390, 19:47 عصر
در حالت پیش فرض KeyPreview فرم برابر فالسه، تا اونو ترو نکنی فرم به اینگونه رویدادها جواب نمیده
KeyPreview = true;

araz_pashazadeh
شنبه 29 مرداد 1390, 17:06 عصر
ممنون از راهنمایی شما دوستان عزیز.
ولی منظور من دسترسی به کلیدهای ترکیبی مثل فشار دادن کلیدهای Ctrl+s و یا مثل این بود.

masoud_z_65
شنبه 29 مرداد 1390, 17:50 عصر
در حالت پیش فرض KeyPreview فرم برابر فالسه، تا اونو ترو نکنی فرم به اینگونه رویدادها جواب نمیده
KeyPreview = true;

منظورت رو متوجه نشدم!!
یعنی اگه بخوایم از مثالایی که دوستامون بالا گفتن باید این کاری که شما گفتین رو انجام بدیم؟!؟!
بعید میدونم ربطی داشته باشه ها!

morteza271
شنبه 29 مرداد 1390, 20:11 عصر
آره برای اینکه مت KeyDown فرم اجرا بشه باید حتما خاصیت KeyPreview از فرمت رو true کنی وگرنه متدش اجرا نمیشه.

بعید میدونم ربطی داشته باشه ها!
باورتون نمیشه برین تست کنین.

Legend M.A.R
دوشنبه 31 مرداد 1390, 18:27 عصر
من هم به مشکل مشابه برخوردم و حل شد به لینک زیر یه نگاهی بنداز
MSDN (http://msdn.microsoft.com/en-us/library/system.windows.forms.keyeventargs.modifiers.aspx)
من به صورت زیر مشکل رو حل کردم
private void frm_MainForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control)
switch (e.KeyCode)
{
case Keys.X: ts_btn_Exit.PerformClick(); break;
}//end switch
}

امیدوارم دیر نشده باشه!!!:متفکر: