PDA

View Full Version : رویداد دکمه enter کیبورد



nooshin609
سه شنبه 22 مهر 1393, 15:44 عصر
با سلام
دوستان چطوری می تونم واسه رویداد enterکد بنویسم؟؟؟می خوام وقتی فرم لود میشه، زمانی که کاربر دکمه enter کیبورد میزنه یه عمل خاصی انجام بشه،ولی تو چه رویدادی و کجا نمیدونم.لطفا کمک کنید

meysamsh91
سه شنبه 22 مهر 1393, 15:58 عصر
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
MessageBox.Show("Enter");
}

RIG000
سه شنبه 22 مهر 1393, 16:16 عصر
private void Form1_KeyPress(object sender, KeyPressEventArgs e) {
if (e.KeyChar == (char)Keys.Enter)
{
label1.BackColor = Color.Red;
}
}
}

nooshin609
سه شنبه 22 مهر 1393, 19:41 عصر
دوستان همین کار رو کردم ولی متاسفانه وقتی روی فرم هر کلیدی رو میزنم ،اصلا وارد بخش Form1_KeyPressنمیشه
انگار نه انگار
میدونین از چی میتونه باشه؟؟

meysamsh91
سه شنبه 22 مهر 1393, 19:50 عصر
دوستان همین کار رو کردم ولی متاسفانه وقتی روی فرم هر کلیدی رو میزنم ،اصلا وارد بخش Form1_KeyPressنمیشه
انگار نه انگار
میدونین از چی میتونه باشه؟؟

سلام
از پنجره Properties روی آیکون Events کلیک کنید (آیکون رعد و برق) لیست رویدادها براتون نمایان میشه.
رویداد KeyPress رو پیدا کنید و روش دابل کلیک کنید تا به محیط کدنویسی هدایت بشید.
در مثال بالا عرض کنم خدمتتون عدد 13 معادل کد اسکی دکمه Enter هست.

nooshin609
سه شنبه 22 مهر 1393, 20:23 عصر
همینکارو کردم دوست عزیز ولی وقتی روی فرم enter میزنم اصلا واردمراحل keypress نمیشه،امکان داره چون تو رویداد loadش focus گذاشتم رو textboxااا،بخاطر این عمل نکنه؟؟

MehdiElexal
سه شنبه 22 مهر 1393, 20:33 عصر
همینکارو کردم دوست عزیز ولی وقتی روی فرم enter میزنم اصلا واردمراحل keypress نمیشه،امکان داره چون تو رویداد loadش focus گذاشتم رو textboxااا،بخاطر این عمل نکنه؟؟

شاید شما روی فرمتون فوکوس ندارید
مطمین هستید زمانی ک اینتر میکنید روی فرم هستید نه روی فرم دیگری؟

RIG000
سه شنبه 22 مهر 1393, 22:13 عصر
همینکارو کردم دوست عزیز ولی وقتی روی فرم enter میزنم اصلا واردمراحل keypress نمیشه،امکان داره چون تو رویداد loadش focus گذاشتم رو textboxااا،بخاطر این عمل نکنه؟؟
اینجوری که شما اینتر رو بزنید دکمه عمل میکنه.!

meysamsh91
سه شنبه 22 مهر 1393, 22:47 عصر
همینکارو کردم دوست عزیز ولی وقتی روی فرم enter میزنم اصلا واردمراحل keypress نمیشه،امکان داره چون تو رویداد loadش focus گذاشتم رو textboxااا،بخاطر این عمل نکنه؟؟
خودتون پاسخ خودتون را دادید، focus روی فرم نیست میتونید این عمل رو بر روی رویداد keypress کنترل textbox که خودتون فرمودید امتحان کنید تا موضوع رو درک کنید.

elec60
چهارشنبه 23 مهر 1393, 20:12 عصر
نیازی نیست Focus روی فرم باشه، اصلا معمولا نمیشه این کار رو کرد، مگر اینکه فورم خالی از کنترلهای قابل فوکوس دیگه باشه که معمولا اینطور نیست.

باید خاصیت KeyPreview فورم برابر true باشه تا KeyPress رو بتونه بخونه.

اگه WPF کار می کردین با خاصیت های Bubbling و Tunneling مربوط به RoutedEvents دیگه مشکلات از این قبیل نداشتین!

elec60
جمعه 25 مهر 1393, 13:22 عصر
روش دوم:




protected override bool ProcessCmdKey(ref Messagemsg,Keys keyData)
{
if(keyData == Keys.Enter){
...
}

return base.ProcessCmdKey(ref msg,keyData);
}

alisafaie
جمعه 25 مهر 1393, 22:08 عصر
ویژگی Keypreview فرم را enable کنید. انشالاه درست می شود.