ورود

نسخه کامل مشاهده نسخه کامل : فرق keypress با key down



zero&one
08-07-2010, 13:37
سلام کسی می تونه توضیح بده که اینکه میگن رویداد key pressقبل از keydownاجرا میشه یعنی چی؟مثلا اگه ما یه کد تو keypress بنویسم چه فرقی می کنه تا توی keydown بنویسِم تو روال کار تاثیر داره؟ چون در هر دو صورت داریم دکمه رو فشار میدیم اگه با مثال واسم توضیح بدین ممنون میشم!

Dark.Lord
08-07-2010, 13:45
یه مثال می زنم که خودتون باید آزمایشش کنید!
ابتدا یک عدد بازی GTA IV خریداری و نصب کنید!
حال در زمان سوار شدن به تاکسی،
اگر KeyPress رخ بدهد، به عنوان مسافر سوار می شود و
اگر KeyDown رخ بدهد، به عنوان راننده سوار می شود! (درکش یکم سخته)
حالا به غیر از این،
مثلا خاصیت KeyPress کلید های جهتی را پشتیبانی نمی کند....
بعد چیز دیگه ای هم که هست اینه که با استفاده از خاصیت KeyPress می شه جلوی اجرا شدن دستورات KeyDown را در برخی مواقع گرفت (چون زودتر اتفاق می افتد....)

zero&one
08-07-2010, 13:51
آره این مثالی که زدین واسم واقعا گنگ بودچرا یعنی چی؟!اما جمله آخرتون تقریبا نزدیک به جواب من بود اینکه میگین که با استفاده از خاصیت KeyPress می شه جلوی اجرا شدن دستورات KeyDown را در برخی مواقع گرفت من دقیقا می خوام بدونم این یعنی چی میشه یه مثال ملموس بزنید ممنون:)

L u K e !
08-07-2010, 14:18
رویداد KeyDown وقتی که کلید پایین باشه دائم اجرا می شه
ولی KeyPress وقتی کلید رو فشار می دی فقط یه بار اجرا می شه

zero&one
08-07-2010, 16:05
مرسی دوستان از پاسخ اگه بازم کسی هست که راجب روال اجرایی بهتر توضیح بده ممنون میشم،و اما یه سوال دیگه کد مربوط به ترکیب چند تا کلید مثلا ctrl+alt+delet رو چطور تو رویداد key down می نویسن؟!!

عــــلی
08-07-2010, 19:38
سلام.

KeyPress (زمانی که کلیدی از صفحه کلید زده شد) ، KeyDown (زمانی که کلیدی از صفحه کلید پایین بود)

رویداد KeyDown وقتی که کلید پایین باشه دائم اجرا می شه
ولی KeyPress وقتی کلید رو فشار می دی فقط یه بار اجرا می شه
تست شد. فرقی نمیکنه.
Keypress و Keydown کلید هایی هستند که پی در پی بعد فشردن کلید اجرا میشن فقط Keyup اینطور عمل نمیکنه.

چیز خاصی نداره.شما راحت با یه خط کد میتونید بفهمید KeyPress چیکار میکنه و KeyDown چی کار.
KeyDown به منظور فشرده شدن کلید های کنترل و شیفت و ... به کار میره و شما برای کلید هایی مثل A,a,B,b,C,c,... بهتره که از KeyPress استفاده کنید چون KeyDown روی کوچک و بزرگ بودن حروف تاثیری نمیگذاره.وبرای کلید های Ctrl,Shift,...بهتر از KeyDown استفاده کنید چون KeyPress ساپورت نمیکنه.

مرسی دوستان از پاسخ اگه بازم کسی هست که راجب روال اجرایی بهتر توضیح بده ممنون میشم،و اما یه سوال دیگه کد مربوط به ترکیب چند تا کلید مثلا ctrl+alt+delet رو چطور تو رویداد key down می نویسن؟!!


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید و سربلند:10:.

Nakh0d4
09-07-2010, 16:30
سلام.
تست شد. فرقی نمیکنه.
Keypress و Keydown کلید هایی هستند که پی در پی بعد فشردن کلید اجرا میشن فقط Keyup اینطور عمل نمیکنه.


keyPress يعني وقتي كليد و فشار ميدهي وkeydown يعني وقتي كليد فشرده رو نگه ميداري وkeyUp يعني كليدي كه پايين نگه داشتي رو رها ميكني
اين درستتر نيست؟

Dark.Lord
09-07-2010, 17:28
keyPress يعني وقتي كليد و فشار ميدهي وkeydown يعني وقتي كليد فشرده رو نگه ميداري وkeyUp يعني كليدي كه پايين نگه داشتي رو رها ميكني
اين درستتر نيست؟

این موردی که شما گفتید دقیقا همون چیزیه که در بازی GTA IV شاهدش هستیم! :31:

zero&one
10-07-2010, 14:29
چیز خاصی نداره.شما راحت با یه خط کد میتونید بفهمید KeyPress چیکار میکنه و KeyDown چی کار.
KeyDown به منظور فشرده شدن کلید های کنترل و شیفت و ... به کار میره و شما برای کلید هایی مثل A,a,B,b,C,c,... بهتره که از KeyPress استفاده کنید چون KeyDown روی کوچک و بزرگ بودن حروف تاثیری نمیگذاره.وبرای کلید های Ctrl,Shift,...بهتر از KeyDown استفاده کنید چون KeyPress ساپورت نمیکنه. ممنون بابت توضیحاتتون اما من بیشتر منظورم این بود که بدونم اینکه در بسیاری از جاها تاکید شده بر اینکه key pressقبل از key down اجرا میشه دقیقا یعنی چی و این روند ترتیبی بودن رو با مثالی درک کنم مسلما این مسئله در بعضی مواقع اهمیت داره حالا جدا از اینکه بعضی از کلیدها در یکی پدیرفتست و در دیگری نه



keypress يعني وقتي كليد و فشار ميدهي وkeydown يعني وقتي كليد فشرده رو نگه ميداري وkeyUp يعني كليدي كه پايين نگه داشتي رو رها ميكني
اين درستتر نيست؟ دوست عزیز این توضیح درسته اما در عمل منم فرقی در رفتار دو رویداد key pressو key down نمی بینم چون همونطور که گفتن فرقی نداره اگر یک کدی رو تو فرایند key pressبنویسیم و بعد اونو نگه داریم پایین چون بازم همون کاریو میکنه که همین کد رو تو رویداد key down اون کلید بنویسیم !!



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید مرسی از لطف و پاسختون اما این قطعه کد این سه کلید رو به صورت جداگانه به کار میگیره من می خوام اینکار در آن واحد انجام بشه یعنی به محض فشار دادن این سه کلید یه اتفاق بیفته مثل خود ویندور تازه حتی وقتی این کد رو اجرا می کنم هم اتفاق جالبی می افته ویندوز عمل می کنه نه فرم!! ویندوز task manager رو اجرا می کنه!راه حل چیه؟

عــــلی
11-07-2010, 23:46
سلام.

keyPress يعني وقتي كليد و فشار ميدهي وkeydown يعني وقتي كليد فشرده رو نگه ميداري وkeyUp يعني كليدي كه پايين نگه داشتي رو رها ميكني
اين درستتر نيست؟

KeyPress (زمانی که کلیدی از صفحه کلید زده شد) ، KeyDown (زمانی که کلیدی از صفحه کلید پایین بود)
توضیح داده شده بود.


ممنون بابت توضیحاتتون اما من بیشتر منظورم این بود که بدونم اینکه در بسیاری از جاها تاکید شده بر اینکه key pressقبل از key down اجرا میشه دقیقا یعنی چی و این روند ترتیبی بودن رو با مثالی درک کنم مسلما این مسئله در بعضی مواقع اهمیت داره حالا جدا از اینکه بعضی از کلیدها در یکی پدیرفتست و در دیگری نه
ببینید یه مثال ساده براتون بزنم.
مثلاً شما برای اجرا کردن تسک منیجر ابتدا کلید های Alt و Shift رو نگه میدارید بعد کلید del رو میزنید اگه این ترتیب رو رعایت نکنید و اول Del رو بزنید میبینید که تسک منیجر اجرا نمیشه.و ترتیب اینها به این صورته که شما نمیتونید به برنامه بفهمونید که وقتی کاربر اول Del رو زد و بعد Shift رو زد کد اجرا بشه این غیر استاندارده:31:!

مرسی از لطف و پاسختون اما این قطعه کد این سه کلید رو به صورت جداگانه به کار میگیره
خوب من گفتم شما با مفهیم and و or اشنایی داریم واسه همین جداگانه نوشتم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


ویندوز task manager رو اجرا می کنه!راه حل چیه؟
این یه کلید ترکیبیه ویندوزه که با کلید های Ctrl +Alt + Del اجرا میشه و کاری به برنامه شما نداره باید اجرا بشه.
موفق باشید.

zero&one
12-07-2010, 18:02
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


من اینو تو رویداد keydownفرم می نویسم هیچ کاری نمیکنه :41:اما تو مال textbox مینویسم کار میکنه ؟؟!چرا؟

این یه کلید ترکیبیه ویندوزه که با کلید های Ctrl +Alt + Del اجرا میشه و کاری به برنامه شما نداره باید اجرا بشه. آره خوب اما اگه بخوایم واسه برناممون از ترکیب این 3 تا کلید استفاده کنیم باید یه راهی داشته باشه که جلوی اجرای task managerرو بگیریم!

عــــلی
12-07-2010, 18:23
سلام.

آره خوب اما اگه بخوایم واسه برناممون از ترکیب این 3 تا کلید استفاده کنیم باید یه راهی داشته باشه که جلوی اجرای task managerرو بگیریم!
خوب این یه روش ویندوزیه که من نمیدونم.

من اینو تو رویداد keydownفرم می نویسم هیچ کاری نمیکنه [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]اما تو مال textbox مینویسم کار میکنه ؟؟!چرا؟
خصیصه KeyPreview فرم رو برابر true قرار بدین.
موفق باشید:11:.

zero&one
13-07-2010, 14:46
مرسی درست شد ببخشید یه سوال دیگه هم پیش اومد این رویداد previewkeydownچیه دیگه؟تو توضیحاتش میگه قبل از keydown اجرا میشه!بازم ممنون