PDA

View Full Version : سوال: اتصال سابروتین به کلید F12 که در تمامی اجزای فرم کار کند



saeidmobashery
دوشنبه 23 بهمن 1402, 15:11 عصر
سلام بر اساتید گرامی

بنده می‌خواهم کلید F12 ، سابروتینی خاص را در تمامی اجزای فرم اجرا کند
راهکاری سراغ دارید ؟

پرستو پارسایی
دوشنبه 23 بهمن 1402, 17:33 عصر
Public Class Form1
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.F12 Then
MySubroutine()
End If
End Sub


Private Sub MySubroutine()
' کد سابروتین خود را در اینجا قرار دهید
End Sub
End Class

ROSTAM2
دوشنبه 23 بهمن 1402, 20:14 عصر
سلام.
این نکته مهم رو فراموش نکنید:

Form.KeyPreview Property (System.Windows.Forms) | Microsoft Learn (https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.form.keypreview?view=windowsd esktop-8.0)

saeidmobashery
دوشنبه 23 بهمن 1402, 22:28 عصر
Public Class Form1
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.F12 Then
MySubroutine()
End If
End Sub


Private Sub MySubroutine()
' کد سابروتین خود را در اینجا قرار دهید
End Sub
End Class


جواب نداد استاد عزیزم ، احتمال دارد مربوط به فوکوس روی اجزایی از فرم باشه که من دقت ندارم ؟

پرستو پارسایی
چهارشنبه 25 بهمن 1402, 17:36 عصر
باید اطمینان حاصل کنید که رویداد KeyPreview فرم شما فعال شده باشه تا بتوانید کلیدهایی که در فرم فشرده می‌شن، را دریافت کنید.
برای فعال کردن رویداد KeyPreview، می‌تونید از Form_Load استفاده کنید. این رویداد هنگامی صدا زده می‌شه که فرم بارگذاری شود. درون آن، مقدار KeyPreview را برابر True قرار دهید. اگر باز هم مشکلی وجود داشت مطمئن بشید که کدهای سابروتین MySubroutine درست هست و هیچ خطایی در آن وجود ندارد. و کلید F12 به درستی شناسایی شده است.



Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.KeyPreview = True
End Sub


Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.F12 Then
MySubroutine()
End If
End Sub


Private Sub MySubroutine()
' کد سابروتین خود را در اینجا قرار دهید
End Sub
End Class

saeidmobashery
چهارشنبه 25 بهمن 1402, 18:51 عصر
باید اطمینان حاصل کنید که رویداد KeyPreview فرم شما فعال شده باشه تا بتوانید کلیدهایی که در فرم فشرده می‌شن، را دریافت کنید.
برای فعال کردن رویداد KeyPreview، می‌تونید از Form_Load استفاده کنید. این رویداد هنگامی صدا زده می‌شه که فرم بارگذاری شود. درون آن، مقدار KeyPreview را برابر True قرار دهید. اگر باز هم مشکلی وجود داشت مطمئن بشید که کدهای سابروتین MySubroutine درست هست و هیچ خطایی در آن وجود ندارد. و کلید F12 به درستی شناسایی شده است.



Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.KeyPreview = True
End Sub


Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.F12 Then
MySubroutine()
End If
End Sub


Private Sub MySubroutine()
' کد سابروتین خود را در اینجا قرار دهید
End Sub
End Class


استاااااااااااااااااااااا اااااااااااااااااااد یدونه‌ای
مشکل از KeyPreview بود
ممنونم