PDA

View Full Version : کلید f10 به جای یک button خاص



m_zamani
چهارشنبه 27 دی 1385, 10:37 صبح
چطور می تونم از کلید F10 به جای یک button روی فرمم استفاده کنم؟
یعنی اگه کلیدf10 رو بزنم انگار button مورد نظر را کلیک کردم

programmermp
چهارشنبه 27 دی 1385, 10:44 صبح
سلام

عزیز دل اینکه خیلی ساده

ببین شما کافیه کدهایی که توی button نوشتی رو توی یک تابع بزاری بعد

از کدهایی که توی تاپیک قبلیت بهت گفته بودم (enter به جای tab) استفاده کنی

البته برای فرم که هر وقت کلید f10 فشرده شد تابع مورد نظر فراخوانی بشه

همین در ضمن یک نکته یادم رفت کدهای تاپیک قبلی هم مال من بود هم مال دیگر دوستان

مال خودم تنها نبود (اصلاح می کنم):متفکر: :متفکر: :متفکر:

:تشویق: :تشویق: :لبخند: :لبخند:

در ضمن باز یه چیزی یادم رفت بهت بگم

ممکنه توی فرمت چندتا object داشته باشی که اگر کدهای بالا رو برای فرمت

بنویسی چون کنترل به یکی از object ها انتقال پیدا کرده و فرم در اون لحظه

فعال نیست ممکنه دکمه f10 عمل نکنه برای رفع این مشکل می تونی

این کار رو بکنی که یک context menu به فرمت اضافه می کنی و عنوان اون

رو خالی می زاری و visible ان رو هم false می کنی و یک گزینه برای اون تعریف می کنی با هر نامی و به ان گزینه کلید میانبر f10 رو می دی
بعد روی ان گزینه دو بار کلیک می کنی و نام تابعی که می خواهی با فشرده

شدن کلید f10 فعال بشه رو می نویس

اینطوری نیازی به استفاده از event های فرم هم نیست

ali_kolahdoozan
چهارشنبه 27 دی 1385, 10:53 صبح
برای رفع مشگل انتقال کلیدها بجای context menu خاصیت keypreview فرمت رو true کن

Sub Zero
چهارشنبه 27 دی 1385, 10:54 صبح
این همه دردسر واسه چی :
اول خاصیت KeyPreview فرمت رو برابر True کن
بعد توی رویداد KeyDown فرمت کد زیر رو بنویس . (مثال)

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.F10 Then MsgBox("F10 Pressed")
End Sub
حالا به جای ("MsgBox("F10 هر کاری که دلت خواست انجام بده . (مثال)

If e.KeyCode = Keys.F10 Then Button1_Click(sender, e)
با این کد همون کاری که دکمه 1 انجام میده کلید F10 هم انجام می ده .

programmermp
چهارشنبه 27 دی 1385, 10:59 صبح
اقا مصطفی سلام

با این مثالی که شما دادید ایا با وجود یک تکست باکس توی فرم که مکان نما در اون قرار داره

بازم کد بالا کار میکنه یا عدد یک در تکست باکس نوشته می شه

چون این موقع دیگه کنترل به تکست باکس انتقال داده شده و فرم فعال نیست
:متفکر: :متفکر: :متفکر:

m_zamani
چهارشنبه 27 دی 1385, 11:13 صبح
مرسی مشکل من که حل شد با راهنماییهای شما
من از این کد استفاده کردم
If e.KeyCode = Keys.F10 Then Button1_Click(sender, e)

Sub Zero
چهارشنبه 27 دی 1385, 12:26 عصر
اقا مصطفی سلام

با این مثالی که شما دادید ایا با وجود یک تکست باکس توی فرم که مکان نما در اون قرار داره

بازم کد بالا کار میکنه یا عدد یک در تکست باکس نوشته می شه

چون این موقع دیگه کنترل به تکست باکس انتقال داده شده و فرم فعال نیست

خاصیت KeyPreview فرم در واقع همین کار رو میکنه . وقتی برابر True بشه و یک کلید زده بشه KeyDown فرم رو در اولویت قرار میده و اول اونو چک میکنه بعد میره سراغ کنترل فعلی .

sh
چهارشنبه 27 دی 1385, 21:56 عصر
توی رویداد KeyDown فرم بنویس :


Select Case e.KeyCode
Case Keys.F3
Button4.PerformClick()
Case Keys.F4
Button1.PerformClick()
End Select