PDA

View Full Version : تشخیص مدت زمان پایین نگه داشتن یک کلید و نحوه عملکرد رویداد Key_Down



pd_ze62
دوشنبه 27 اسفند 1386, 12:26 عصر
زمانی که یه کلید رو برای مدت بیشتری از حد معمول پایین نگه میداریم، چه اتفاقی میفته؟ رویداد Key_Down توی اون مدت دائم تکرار میشه؟ یا فقط یه بار اجرا میشه ولی از اون خارج نمیشه؟ کلا چه جوریاس؟
می خوام زمانی که کاربر کلیدی رو برای یه ثانیه پایین نگه داشت، روی تکست باکس مربوطه یه کارکتر خاص (مثلا*)چاپ شه (به جای اینکه کارکتر اون کلید شت سر هم چاپ شه). کسی پیشنهادی داره؟

Ghasem Dehghani
دوشنبه 27 اسفند 1386, 19:06 عصر
سلام دوست عزیز !
در جواب به سوال اول شما :


زمانی که یه کلید رو برای مدت بیشتری از حد معمول پایین نگه میداریم، چه اتفاقی میفته؟ رویداد Key_Down توی اون مدت دائم تکرار میشه؟ یا فقط یه بار اجرا میشه ولی از اون خارج نمیشه؟ کلا چه جوریاس؟

برنامه هایی که شما مینویسید تحت ویندوز هستن و به همین دلیل از قواعد ویندوز تبعیت میکنند و شما با فشار دادن یک کلید در هر جای ویندوز که باشید ابتدا برای چند لحظه مکث میکند و بعد در فواصل زمانی ازپیش تنظیم شده در مسیر زیر کاراکتر مربوطه مرتبا تکرار میشود :


ControlPanel -> KeyBoard


و اما سوال دوم :


می خوام زمانی که کاربر کلیدی رو برای یه ثانیه پایین نگه داشت، روی تکست باکس مربوطه یه کارکتر خاص (مثلا*)چاپ شه (به جای اینکه کارکتر اون کلید شت سر هم چاپ شه). کسی پیشنهادی داره؟

به نظر من میتونی از کد زیر استفاده کنی (البته این یک روش از N روشه)


bool KeyUp = true;

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
KeyUp = true;
}

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (KeyUp == false)
{
SendKeys.Send("{Left}");
SendKeys.Send("{Del}");
}
KeyUp = false;
}

موفق باشی !

pd_ze62
دوشنبه 27 اسفند 1386, 21:58 عصر
ممنون جناب دهقانی.
اما من هنوز متوجه نشدم چه طور مدت زمان پایین نگه داشتن کلید رو متوجه بشم.

با توجه به گفته های شما سیستم عامل توی بازه های زمانی مشخصی کیبورد رو میخونه، پس متوجه نمی شه که این کلید برای بار دوم فشار داده شده یا اینکه کاربر کلید رو اصلا رها نکرده ؟!! اما یه مقدار عجیب به نظر میاد، نمیاد؟ خب لابد نمیاد دیگه!

gdevnb
دوشنبه 27 اسفند 1386, 22:55 عصر
سلام

Telerik یه دکمه داره که کارش همینه
http://parchinonline.blogfa.com/page/l4.aspx