PDA

View Full Version : سوال: مدیریت کردن فشرده شدن سه کلید در رویداد keyDown



shadi khanum
شنبه 31 تیر 1391, 16:11 عصر
سلام دوستان. وقتی با VS کار میکنید میتونید مثلا با Ctrl+K,Ctrl+C یه خط رو کامنت کنید. یعنی با فشردن Ctrl و بعد از اون کلید K و کلید C میتونید یه کاری انجام بدید. من الان همچین چیزی واسه برنامه خودم میخوام که مثلا با Ctrl+A و بعد از اون Ctrl+M یه کاری انجام بشه.
یعنی فشرده شدن سه کلید رو برنامه تشخیص بده و بر اساسش یه کاری انجام بشه
مرسی

mehdy.programmer
شنبه 31 تیر 1391, 16:26 عصر
در رویداد keydown اینو از این استفاده کن:

if(e.keycode==keys.ctrl)
{
if(e.keycode==keys.a)
{
//something to do...
}
}

و برای ctrl+M طبق همین روال
فقط اگه مشکلی داشت خودت یکم باهاش ور برو (امکا تستشو نداشتنم)

موفق باشی

Farshid007
شنبه 31 تیر 1391, 17:01 عصر
اینجوری میشه:
bool isCA = false;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
switch (isCA)
{
case true:
if (e.Control && e.KeyCode == Keys.M)
{
MessageBox.Show("Frist CTRL+A then CTRL+M has been pressed");
isCA = false;
}
else
{
isCA = false;
}
break;

case false:
if (e.Control && e.KeyCode == Keys.A)
{
isCA = true;
}
break;
}
}
مثل خود ویژوال استادیو که اول باید کنترل و A گرفته بشند تا متغیر isCA =true سپس اگه CTRL+M بشه مسیج میده در غیر انیصورت دوباره False میشه

Farshid007
شنبه 31 تیر 1391, 17:07 عصر
داش mehdy.programmer (http://barnamenevis.org/member.php?256607-mehdy.programmer)
اونجوری که نمیشه
چون همون بار اول اگه CTRL+A باشه
میره تو خود شرط و شرط میگه که اگه CTRL+M باشه اینو اجرا کن
تو یه با نمیشه که بگی اگه CTRL+A بود و اگه CRTL+A این کارو انجام بده
فکر کنم نفهمیدید
اینجور مسائل یه خورده درکش سخته زیاد در گیرش نشید همون کد منو استفاده کن شادی خانوم

shadi khanum
شنبه 31 تیر 1391, 17:16 عصر
در رویداد keydown اینو از این استفاده کن:

if(e.keycode==keys.ctrl)
{
if(e.keycode==keys.a)
{
//something to do...
}
}

و برای ctrl+M طبق همین روال
فقط اگه مشکلی داشت خودت یکم باهاش ور برو (امکا تستشو نداشتنم)

موفق باشی
دوست عزیز ممنون از جواب دادنت ولی مشکل من این نیست. من میخوام وقتی کنترل + m + a رو بصورت پشت سر هم زد کاری که میخوام انجام بشه ..!!!

shadi khanum
شنبه 31 تیر 1391, 17:20 عصر
داش mehdy.programmer (http://barnamenevis.org/member.php?256607-mehdy.programmer)
اونجوری که نمیشه
چون همون بار اول اگه CTRL+A باشه
میره تو خود شرط و شرط میگه که اگه CTRL+M باشه اینو اجرا کن
تو یه با نمیشه که بگی اگه CTRL+A بود و اگه CRTL+A این کارو انجام بده
فکر کنم نفهمیدید
اینجور مسائل یه خورده درکش سخته زیاد در گیرش نشید همون کد منو استفاده کن شادی خانوم
مرسی دوست عزیز. درسته مشکلم حل شد

Mahmoud.Afrad
شنبه 31 تیر 1391, 17:50 عصر
سه دکمه ای بخوای باید دو تاش از دکمه های کنترلی (shift , alt , ctrl...) باشه
if (e.Control && e.Shift && e.KeyCode == Keys.Add)
MessageBox.Show("ctrl + shift + Add(Plus)");