سلام
چطوري ميشه shortcutkey براي دو تا حرف يا عدد درست كرد؟مثلا alt+a,e .
يعني alt و a و e سه تاش باهم بايد فشرده شه؟
سلام
چطوري ميشه shortcutkey براي دو تا حرف يا عدد درست كرد؟مثلا alt+a,e .
يعني alt و a و e سه تاش باهم بايد فشرده شه؟
سلام
برای اینکار از توابع api استفاده می کنند . GetKeyboardState
اما از این کد هم میشه استفاده کرد :
bool flag = false;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.KeyCode == Keys.A)
flag = true;
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.B && flag)
{
MessageBox.Show("");
flag = false;
}
}
موفق باشید .
فقط يك سوال ديگه.من ميخوام براي مثلا alt+a يكاري انجام بده(مثلا يك منو رو باز كنه).و بعد ازاون حرف بعديو كه زد يكاره ديگه انجام بده؟؟
فك كنم باتابع api نشه!!ميشه؟
بعد چون منو و زير منو زياد دارم اين flag هم نمي دونم ميشه يا نه!
كنترل منو خودش به صورتي هستش كه اگر alt+حرف اول مثلا اولي آيتم منو فشرده بشه اون منو رو باز ميكنه و حالا اگر حرف اول هركدوم از زير منو هاش فشرده شه اون زيرمنو رو انتخاب مب كنه.مثلا براي منوي file كه گزينه Open توش هست.alt+f منوي فايل رو باز ميكنه و o زيرمنويopen رو اجرا ميكنه.من ميخام اينو به صورت عددي پياده كنم.يعني alt+1 منويfile رو باز كنه و 1 بعدي گزينه open رو.
مشكلي كه وجو داره اينه كه به زسر منو ها ميشه shortcutkey عددي داد ولي به header ها نميشه.برا همين بايد توي key down خود منو نوشته شه.
كه اونجام نميتونم بگم مثلا برا alt+1 منو رو باز كن منتظر گرفتن كاراكتر بعدي شو.
ممنون ميشم اگر كسي ايده اي داره بهم بگه.
من كه نتونستم اينو درست كنم.حالا دوتا سوال:
1-آيا ميشه وقتي كاربر يك كليد رو زد گرفتش و يه كد ديگه بهش داد و برا ي keydown فرستاد؟؟
2-آ يا كامپوننتي مثل جانوس يا dev وجود داره كه منو هاي باقابليت بهتر داشته باشه؟
سلام
بدون api هم میشه
ابتدا می ری خاصیت keypreview فرم رو true می کنی
بعد تو رویداد Keypressیا keydown این کد رو می نویسی
if(e.control)
switch(e.keycode)
{
case keys.R:
CallMenu
break;
case keys.P
call Menu P;
break;
}
شَما به جای Call Menu هر اتفاقی که قراره با فشردن این دکمه ها بیفته بنویس
Control +p
یا Control+R
این کد یه مشکل داره. وقتی طرف دکمه های Alt و a رو یه بار یزنه و ول کنه (بدون اینکه e) رو فشار بده. بازم flag برابر true میشه و بعد از اون هرموقع دکمه ی E به تنهایی زده شه اتفاق مورد نظر رخ میده ) حتی اگه alt و a فشرده نشده باشه! تو متد keyUp همیشه باید در آخر متد flag=false; نوشته شه!
ممنون از توجهت ، منبعی که این روش رو معرفی کرده بود هم گفته بود که باید از یه تایمر استفاده کرد ، ولی من به خاطر ساده نوشتن این کد رو همینجوری ارائه کردم .
ممنون از جفت دوستان.ولي من اينو دارم براي منو ها مينويسم و منو ها يك خاصيت جالب دارن و اين اينه كه وقتي يك منو باز ميشه ديگه هيچ رويداد keydown ازفرم يا خود منو و... اجرا نميشه.(چون همه منو ها خودشون shortcutkey )دارن و يه جورايي ايونت keydown تو زماني كه بازن برا خودشونه!!!!
براي همين من نتونستم كاري كه ميخوام رو انجام بدم.ولي راهنماي هاتون كمك كرد.ممنون