PDA

View Full Version : نحوه تشخیص دکمه بر روی فرم



sasan_22
دوشنبه 11 شهریور 1392, 10:30 صبح
سلام
زمانی که اشیا گوناگونی مثل دکمه رو فرم هستند دیگه رویداد key_press فرم کار نمیکند؟
چ کنم؟:لبخندساده:

sasan_22
دوشنبه 11 شهریور 1392, 22:02 عصر
اساتید ی کمکی راهنمایی ..
ممنون میشم

ghasemloo
دوشنبه 11 شهریور 1392, 22:10 عصر
سلام
دکمه و ابزاری که گذاشتی رو فرم اون ها هم به رویداد key_pressنیاز دارد

sadeghjun
دوشنبه 11 شهریور 1392, 22:29 عصر
سلام
رویداد keypress مربوط به کلید ها کار نمیکند یا رویداد خود فرم؟
میشه یه کم توضیح بدی!!

sasan_22
سه شنبه 12 شهریور 1392, 20:51 عصر
دوستان عزیز زمانی که آبجکتی (باتن تکس باکس ... ) رو فرم نباشد key_press کار میکند ولی اگه چند تا ابجکت بذارم دیگه کار نمی کنه حالا چ کنم؟؟
میخوام زمانی که هر آبجکتی فوکوس گرفت زمانی که F2 رو زدم مثلا عملی انجام شه ؟

خیلی ممنون

farhad.k.t
سه شنبه 12 شهریور 1392, 21:00 عصر
اول خاصیت key preview فرم رو True کن بعد کد زیر را در قسمت keypress آبجکت بنویس
private void button1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar ==Convert.ToChar ( Keys.F2) )
{
MessageBox.Show("Test");
}
}

ولی بهتره از keydown استفاده کنی :
private void button1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode ==Keys.F2 )
{
MessageBox.Show("ersfse");
}
}

farhad.k.t
سه شنبه 12 شهریور 1392, 21:02 عصر
دوستان من با کلیدهای دیگر keypress رو امتحان کردم و جواب داد ولی جرا برای کلید هاf1,f2,... جواب نمی ده؟

kazem235
سه شنبه 12 شهریور 1392, 21:22 عصر
دوستان عزیز زمانی که آبجکتی (باتن تکس باکس ... ) رو فرم نباشد key_press کار میکند ولی اگه چند تا ابجکت بذارم دیگه کار نمی کنه حالا چ کنم؟؟
میخوام زمانی که هر آبجکتی فوکوس گرفت زمانی که F2 رو زدم مثلا عملی انجام شه ؟

خیلی ممنون

من هم به یک همچین مشکلی برخوردم و از این روش استفاده کردم درست شد.
تویه لود فرم این کد را بنویس.
this.KeyPreview = true;

sasan_22
چهارشنبه 13 شهریور 1392, 10:01 صبح
دوست عزیز کد شما کاملا درست ولی برای f ها و همچنین دکمه اینزرت - هام - اند و... کار نمیکنه؟

farhad.k.t
چهارشنبه 13 شهریور 1392, 10:21 صبح
من هم به یک همچین مشکلی برخوردم و از این روش استفاده کردم درست شد.
تویه لود فرم این کد را بنویس.
this.KeyPreview = true;
خوب منم key preview فرم رو true کردم ولی در key press همونطور که آقای ساسان گفتند جواب نمی ده.

farhad.k.t
چهارشنبه 13 شهریور 1392, 10:26 صبح
دوست عزیز کد شما کاملا درست ولی برای f ها و همچنین دکمه اینزرت - هام - اند و... کار نمیکنه؟
دوست عزیز
بهتره از keydown استفاده کنی چون keycode داره و قابلیت تشخیص همه کلیدهایی که شما می خواید رو داره.(کد دوم)
راستی دلیل شناسایی نشدن کلیدهای f,insertو... فکر کنم به خاطر این هست که ما از keychar استفاده می کنیم و وقتی کانورت می کنیم ، این کلید ها یک کاراکتر نیستند... بنابراین شناسایی نمی شوند.
نظر شما چیه؟؟؟

sasan_22
چهارشنبه 13 شهریور 1392, 18:16 عصر
پس بنابراین با keydown استفاده کنم ؟؟

فقط یه موضوعی - کلید f ها همه جا کداشون یکی هست ( تو همه کیبرد ها)؟؟؟؟؟؟؟؟؟؟

group45
چهارشنبه 13 شهریور 1392, 18:39 عصر
با سلام
به صفحه زیر و پست شماره 951 یه سر بزنید
http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE/page24

farhad.k.t
چهارشنبه 13 شهریور 1392, 19:40 عصر
دوست عزیز هر کلید کیبورد یک کد اسکی یگانه داره که با اون شناسایی می شه و در واقع در مقدار شمارشی keys ، کلیدها بر اساس کداسکی مقدار دهی شده اند و ما به جای نوشتن کد اسکی آن ها از مقادیر موجود در keys استفاده می کنیم.
(این کدها در تمام رایانه ها مشترکند)