PDA

View Full Version : سوال: حرکت بین یه سری از Text box ها زدن کلید enter



Zeinab_liver
چهارشنبه 10 تیر 1388, 12:57 عصر
سلام
من یه فرم طراحی کردم که تووش تعداد زیادی text box داره!
می خوام با زدن کلید enter کاربر به یه سری از textbox ها که من می خوام بره!
میشه کمک کنید آیا؟

arsalansalar
چهارشنبه 10 تیر 1388, 14:40 عصر
از خاصیت های keypress و یا keydown استفاده کن.

karim orooji
چهارشنبه 10 تیر 1388, 15:04 عصر
اين كارتو راه ميندازه

Pr0grammer
چهارشنبه 10 تیر 1388, 15:20 عصر
با این کد زمانی که روی Text1 باشید و کلید Enter رو بزنید، به Text2 میره :

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = 13 Then TextBox2.Focus()
End Sub

sari-1369
چهارشنبه 10 تیر 1388, 19:58 عصر
اون تکست باکس هایی که مورد نظرتون هستش ، خاصیت tabindex اونهارو از 0 به ترتیب شماره گزاری کنید

سپس خاصیت KeyPreview فرمتون رو برابر True قرار بدید

بعد از اون تو رویداد KeyUp فرمتون کد زیر رو بنویسید .



If e.KeyCode = Keys.Enter Then
SendKeys.Send("{Tab}")
End If

saeedr22
چهارشنبه 10 تیر 1388, 20:02 عصر
پاسخ Sar-1369 بهترین جواب هستش.

mehr83
جمعه 10 مهر 1388, 10:08 صبح
اگر بخوایم با کلید های بالا و پایین مکان نما این کار رو انجام بدیم باید چه کدی بنویسم
یعنی با زدن کلید up مکان نما، Textbox بالایی انتخاب بشه و با زدن کلید پایین مکان نما، Textbox پایینی انتخاب بشه.
نمیخوام برای تک تک Textbox ها کد بنویسم .

masoodinfo
جمعه 10 مهر 1388, 22:01 عصر
اگر بخوایم با کلید های بالا و پایین مکان نما این کار رو انجام بدیم باید چه کدی بنویسم
یعنی با زدن کلید up مکان نما، Textbox بالایی انتخاب بشه و با زدن کلید پایین مکان نما، Textbox پایینی انتخاب بشه.
نمیخوام برای تک تک Textbox ها کد بنویسم .

با سلام به شما
این کد تقدیم به شما.فقط زحمت کپی کردن و قرار دادن توی فرم با شما.:لبخند:



Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
If keyData = Keys.Enter Then
SendKeys.Send("{TAB}")
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function

انشاالله که مشکلت حل بشه با این.
موفق باشید.

masoodinfo
جمعه 10 مهر 1388, 22:02 عصر
شرمنده یادم نبود واسه Up و Down هم می خوای.این رو دیگه زحمتش رو بکش. شرمنده.:خجالت:

masoodinfo
جمعه 10 مهر 1388, 23:10 عصر
بنده رو ببخشید.

مشکل کد بالا این است که بر روی تمامی اشیاء روی فرم این تابع اجرا میشه و با زدن Enter یکی یکی همه ی اشیا فکوس می گیرند.
در صورتی که شما دارای اشیا ثابت بر روی فرمتون هستید می تونید این گونه هم عمل کنید:



Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress, TextBox2.KeyPress, TextBox3.KeyPress, TextBox4.KeyPress, TextBox5.KeyPress
If Asc(e.KeyChar) = Keys.Enter Then
SendKeys.Send("{TAB}")
End If
End Sub


هنوز مشکلی از این کد به ذهنم نرسیده.
راستی اگر شما یک User Control بسازید و کنترل textbox را هم Inherits کنید و کد بالا( یعنی Process..) رو هم چاشنیش کنید فکر کنم فقط بر روی textbox های ساخته شده این تابع اعمال میشه.

دوستان کمک کنند:گریه:

anooshiran
شنبه 11 مهر 1388, 00:21 صبح
سلام دوست عزيز

با كمي تغيير در كد خودت مي تواني مشكل را حل كني.
به كد زير توجه كن




Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
If Me.ActiveControl.GetType.Name = "TextBox" Then
If keyData = Keys.Enter Then
SendKeys.Send("{TAB}")
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End Function

mehr83
شنبه 11 مهر 1388, 08:39 صبح
نشد
من میخوام با کلیدهای بالا و پایین مکان نما حرکت کنم

غلامرضا شریفی
شنبه 11 مهر 1388, 09:56 صبح
جهت حركت به بالا پايين چپ راست و جلوگيري از صداي توليد شده پس از اينتر


Private Sub TextBox2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox2.KeyDown
If e.KeyCode = Keys.Up Then Me.TextBox1.Focus() : Me.TextBox1.SelectionStart = Me.TextBox1.Text.Length ' - براي رفتن به تكس بالا ---
If e.KeyCode = Keys.Left Then Me.TextBox1.Focus() : Me.TextBox1.SelectionStart = Me.TextBox1.Text.Length ' - براي رفتن به تكس چپ ---
If e.KeyCode = Keys.Right Then Me.TextBox1.Focus() : Me.TextBox1.SelectionStart = Me.TextBox1.Text.Length ' - براي رفتن به تكس راست ---
If e.KeyCode = Keys.Enter Then Me.TextBox3.Focus() : Me.TextBox3.SelectionStart = Me.TextBox3.Text.Length ' - براي رفتن به تكس بعدي ---
End Sub
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress, TextBox2.KeyPress, TextBox3.KeyPress
'--- اگر مي خواهي صداي ويندوز هم در نياد ---
If Microsoft.VisualBasic.IsNumeric(e.KeyChar) = False Then
e.Handled = True
Exit Sub
End If
End Sub

mehr83
شنبه 11 مهر 1388, 12:27 عصر
ممنون از پاسختون
اما من نمیخوام برای هر textbox کد بنویسم
میخوام مثل کد اینتر که یه بار نوشته میشه برای کلید های بالا و پایین هم یه بار نوشته بشه.
یعنی اگر tabindex تکست فعلی 10 باشه با فشردن کلید بالا، تکست باکس با tabindex9‌انتخاب بشه و با فشردن کلید پایین تکست باکس با tabindex11 انتخاب بشه

masoodinfo
شنبه 11 مهر 1388, 20:59 عصر
با سلام .من دوباره یک کد دیگه از خودم با کمک دیگر سایت ها تراوش:لبخند: کردم که انشاالله درست هست.



Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
If Me.ActiveControl.GetType.Name = "TextBox" Then
If keyData = Keys.Down Then
Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
End If
If keyData = Keys.Up Then
Me.SelectNextControl(Me.ActiveControl, False, True, True, True)
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End Function

ostovarit
شنبه 22 اسفند 1388, 21:16 عصر
اون تکست باکس هایی که مورد نظرتون هستش ، خاصیت tabindex اونهارو از 0 به ترتیب شماره گزاری کنید

سپس خاصیت KeyPreview فرمتون رو برابر True قرار بدید

بعد از اون تو رویداد KeyUp فرمتون کد زیر رو بنویسید .



If e.KeyCode = Keys.Enter Then




SendKeys.Send("{Tab}")


End If


همه این کارا رو کردم جواب هم میده ولی وقتی میره تکست باکس بعدی یک صدای هشدار هم میده ... !!

nafisehk
یک شنبه 26 آبان 1392, 15:53 عصر
اون تکست باکس هایی که مورد نظرتون هستش ، خاصیت tabindex اونهارو از 0 به ترتیب شماره گزاری کنید

سپس خاصیت KeyPreview فرمتون رو برابر True قرار بدید

بعد از اون تو رویداد KeyUp فرمتون کد زیر رو بنویسید .



If e.KeyCode = Keys.Enter Then
SendKeys.Send("{Tab}")
End If

10 تیر 88 :))
با این کد رویداد کلیک باتن های فرم هم اجرا میشه...چطور میشه فقط focus شه؟

peyman1364
دوشنبه 04 آذر 1392, 20:17 عصر
مطلبتون خیلی مفید بود خیلی به دردم خورد ممنون