PDA

View Full Version : سوال: جایگذینی رویداد کلیک یک Button بر روی یکی از دکمه های کیبورد



mahdi_armed
پنج شنبه 07 دی 1391, 10:10 صبح
سلام
دوستان اگه لطف کنن کمکم کنن ممنون میشم
میخواستم وقتی کلید Enter رو فشار میدم , رویداد کلیک مربوط به یه button اجرا بشه
چیکار باید بکنم ؟

morteza5358
پنج شنبه 07 دی 1391, 10:21 صبح
سلام
ابتدا خاصیت KeyPreview فرم را true کنید.
بعد باید تو رویداد KeyDown فرمت بگی که اگر کاربر اینتر رو زده بود تابع کلیک باتن رو صدا بزنه.
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
button1_Click(null, null);
}
}

mahdi_armed
پنج شنبه 07 دی 1391, 10:33 صبح
مرسی مرتضی جان
فقط یه سوال ؟
چرا مقدار های Button1_Click رو Null گذاشتی ؟
فرقشون با (object sender, EventArgs e) چیه ؟

morteza5358
پنج شنبه 07 دی 1391, 10:37 صبح
برای این null گذاشتم چون مقدار هایی که برای باتن میفرستیم برای ما اهمیت ندارن.
مثلا اگه با e و sender تو دستوراتت کار می کنی به جای null ، به تابع مقدار بفرست.
امیدوارم منظورمو رسونده باشم...


مرسی مرتضی جان
در ضمن به جای این کلمات از دکمه "تشکر کردن" استفاده کنید:چشمک:

mahdi_armed
پنج شنبه 07 دی 1391, 10:42 صبح
اگه اهمیت نداره پس (object sender, EventArgs e) رو هم میتونیم بزاریم دیگه ؟
من گذاشتم ولی ایراد گرفت

راستی. اول دکمه ی تشکر رو زدم بعد لفظی تشکر کردم :لبخندساده:

morteza5358
پنج شنبه 07 دی 1391, 10:49 صبح
ببین دوست من اگه میخوای براش مقدار بفرستی، پارامتر اول رو باید یه شئ از نوع object و پارامتر دوم رو یه نوع EventArgs بدی.
که به شخصه نمیدونم EventArgs دقیقا چیه!:گریه:

mahdi_armed
پنج شنبه 07 دی 1391, 10:58 صبح
مرسی از راهنماییت دوست من
به هر حال مشکلم حل شد

تشکر

SHD.NET
پنج شنبه 07 دی 1391, 11:12 صبح
کامپوننت های دات نت بار هم اینو به صورت آماده توی خصوصیاتشون دارن

morteza5358
پنج شنبه 07 دی 1391, 11:47 صبح
دوستان کسی اطلاعاتی در مورد EventArgs داره؟؟؟؟؟؟؟

aradrobo
پنج شنبه 07 دی 1391, 13:02 عصر
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
button1_Click(sender,e);
}
}

به این صورت هم می تونی بنویسی .

فرید نجفلو
جمعه 08 دی 1391, 02:35 صبح
دوستان کسی اطلاعاتی در مورد EventArgs داره؟؟؟؟؟؟؟
دوست عزیز به کد خودتون دقت کنید
اینجا اومدی از e که نوعش KeyEventArgs هست استفاده کردن یعنی e.KeyCode

در ویدادهای معمول sender برابر همون شئی و کنترلی هست که رویداد مطعلق به اونه (تو اون کد sender=Form1) و e اطلاعاتی در مورد اون رویداد رو در اختیار می ذاره که در اینجا e.KeyCode کلیدی هست که روی صفحه کلید فشرده شده (اطلاعات دیگه هم مثل حالت کلید های Ctrl,Alt,Shift رو هم میشه پیدا کرد)
در بعضی اوقات بدون وجود e عملا کاری از پیش نمیره (تو این کد باید فهمید کدوم کلید فشرده شد و گرنه...!)


-----------
و البته در جوابی که شما دادید این روش بهتره:
button1.PerformClick()

morteza5358
جمعه 08 دی 1391, 18:18 عصر
سلام
یعنی KeyEventArgs فقط برای گرفتن کلید های کیبورده؟
مثلا نمیشه جایی که موس کلیک کرده رو باش به دست آورد؟