PDA

View Full Version : کار با رویداد صفحه کلید



lady64
یک شنبه 15 مرداد 1391, 23:05 عصر
سلام . این کد ساده چرا کار نمیکنه . مثلا وقتی کلید a‌ رو از صفحه کلید فشار میدم میخوام تو textbox بنویسه ولی اتفاقی نمی افته .

Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.A Then
TextBox1.Text = "l is press"
End If
End Sub

یا حتی این کد :


Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

If e.KeyValue = 65 Then
Me.Text = "a"
End If
End Sub

و متاسفانه این هم کار نمیکنه :

Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
If e.KeyChar = "a" Then
Me.Text = "a press"
End If
End Sub

مشکل چیه ؟ پیشاپیش ممنونم

JaVa
یک شنبه 15 مرداد 1391, 23:21 عصر
سلام . این کد ساده چرا کار نمیکنه . مثلا وقتی کلید a‌ رو از صفحه کلید فشار میدم میخوام تو textbox بنویسه ولی اتفاقی نمی افته .

باید توی رویداد خود تکس باکس بنویسی

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.A Then
TextBox1.Text = "l is press"
End If
End Sub



Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.A Then
TextBox1.Text = "l is press"
End If
End Sub


یا حتی این کد :
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyValue = 65 Then
Me.Text = "a"
End If
End Sub

باید focus رو فرم باشد
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyValue = 65 Then
Me.Text = "a"
End If
End Sub



و متاسفانه این هم کار نمیکنه :

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode = Keys.A Then
Me.Text = "a press"
End If
End Sub

Saman_12
یک شنبه 15 مرداد 1391, 23:38 عصر
سلام . این کد ساده چرا کار نمیکنه . مثلا وقتی کلید a‌ رو از صفحه کلید فشار میدم میخوام تو textbox بنویسه ولی اتفاقی نمی افته .

Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.A Then
TextBox1.Text = "l is press"
End If
End Sub

یا حتی این کد :


Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

If e.KeyValue = 65 Then
Me.Text = "a"
End If
End Sub

و متاسفانه این هم کار نمیکنه :

Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
If e.KeyChar = "a" Then
Me.Text = "a press"
End If
End Sub

مشکل چیه ؟ پیشاپیش ممنونم

هیچ کدوم مشکلی ندارن!

merlin425
دوشنبه 16 مرداد 1391, 01:59 صبح
خاصیت key preview مربوط به فرم رو true کردی
چک کن اگه نباشه کد های رویدادهای keydown keyup keypress اجرا نمیشه

lady64
دوشنبه 16 مرداد 1391, 08:05 صبح
خاصیت key preview مربوط به فرم رو true کردی
چک کن اگه نباشه کد های رویدادهای keydown keyup keypress اجرا نمیشه
مرسی . اینو نمیدونستم . حل شد . خیلی خیلی ممنونم . و یک سوال دیگه . این کد زیر رو باید در چه رویدادی نوشت و چکار میکنه ؟

If e.KeyValue = 65 Then
e.Handled = True
Else
e.Handled = False

End If


و دو سوال هم در مورد رویدادهای موس . این کد تعداد دفعات کلیک رو بررسی میکنه ولی فقط در مورد یک بار کلیک کار میکنه .

If e.Clicks = 2 Then
Me.Text = 2
End If

هم تو رویداد muse-click نوشتم و هم mouse-up و mouse-down

و در مورد middle. آیا منظور همون اسکرول موس هست . اگه آره برای من این کد هم کار نمیکنه:

If e.Button = Windows.Forms.MouseButtons.Middle Then
Me.BackColor = Color.BlanchedAlmond
End If

ولی right,left کار میکنن. ممنون از اینکه وقت میزارید

merlin425
دوشنبه 16 مرداد 1391, 15:14 عصر
سوال 1 : توی رویداد KeyDown اگر A را بزنی Handleel رو true میکنه و به سیستم عامل می فهمونه که رویداد مدیریت شده است موقعی کاربرد داره که مثلآ میخای کلید وارد شده رو null کنی و از بین ببری مثلآ textbox شماره تلفن که باید عدد بگیره اینجا به این شکل می تونی کاراکتر های غیر عددی رو Null کنی و handled رو هم true کنی که بوق نزنه

سوال 2 : من اینو تو MouseDown نوشتم و با تک کلیک 1 داد با دابل کلیک 2 شاید سرعت دابل کلیکت زیاد سریع نیست

سوال 3 : بله همون اسکرول موس این رو هم تو MouseDown نوشتم جواب داد البته منظور چرخوندن اسکرول نیستا باید اسکرول رو به پایین فشار بدی مثل کلیک