ورود

View Full Version : چطوری میشه KeyPress رو با کلید خاص صدا زد؟



combo_ci
شنبه 13 بهمن 1386, 14:42 عصر
سلام من یه برنامه نوشتم که توش یه textbox داره...توی KeyPress اون txtbox یه کد نوشتم که فقط بشه عدد توش تایپ کرد....یه تیکه کد دیگه هم هست که دکمه backspace رو هم قبول میکنه و از آخر textbox یه کاراکتر کم میکنه....

حالا اگه برنامه رو اجرا کنین میبینین که وقتی back space زده شد بعد از کم شدن یه کاراکتر از کنترل textbox میاد رو اولین کاراکتر ...و برای تایپ کردن باید یه بار دکمه end رو زد بعد به آخر textbox.text اضافه کرد...

حالا میخواستم ببینم میشه یه جوری دکمه end رو به صورت manual فراخونی سلام من یه برنامه نوشتم که توش یه textbox داره...توی KeyPress اون txtbox یه کد نوشتم که فقط بشه عدد توش تایپ کرد....یه تیکه کد دیگه هم هست که دکمه backspace رو هم قبول میکنه و از آخر textbox یه کاراکتر کم میکنه....

حالا اگه برنامه رو اجرا کنین میبینین که وقتی back space زده شد بعد از کم شدن یه کاراکتر از کنترل textbox میاد رو اولین کاراکتر ...و برای تایپ کردن باید یه بار دکمه end رو زد بعد به آخر textbox.text اضافه کرد...

حالا میخواستم ببینم میشه یه جوری دکمه end رو به صورت manual فراخونی کرد؟

saghari
شنبه 13 بهمن 1386, 15:03 عصر
با سلام
برای فراخوانی یک کلید بصورت manual از دستور send کلاس sendkeys استفاده میشه مثلا برای ارسال کد کلید Tab دستور زیر استفاده میشه :

System.Windows.Forms.SendKeys.Send("{TAB}")
متاسفانه روی این سیستمی که باهاش وصل شدم msdn نصب نیست ولی احتمالا معادل کلید /end همان کلمه END باشه اگه نبود توی msdn یه سرچ کوچیک کنی حتما پیدا میکنی

mc_laren
شنبه 13 بهمن 1386, 21:18 عصر
به نام خدا
سلام
ببین بدردت می خوره مال وی بی
Private Sub Text_tedad_KeyPress(KeyAscii As Integer)
ss = "0123456789"
If InStr(ss, Chr(KeyAscii)) = 0 And KeyAscii <> vbKeyBack Then
KeyAscii = 0
End If
End Sub

saeed_rezaei
شنبه 13 بهمن 1386, 22:01 عصر
سلام
چرا اینقده کدتون رو می پیچونید؟؟

از کد زیر استفاده کنی دیگه نیازی به این حرفها نیست.



If (Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 59) And Asc(e.KeyChar) <> 13 And Asc(e.KeyChar) <> 8 And Asc(e.KeyChar) <> 45 Then
e.Handled = True
End If

imanamami
دوشنبه 09 خرداد 1390, 21:20 عصر
من به دنبال این عملیات تو ASP.net بودم.ولی دلم نیومد این کدو واسطون نزارم

if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) e.Handled = true;
if (Text.Length > 34) e.Handled = true;
این تیکه کد برای C# هست
موفق باشید

imanamami
دوشنبه 09 خرداد 1390, 21:21 عصر
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) e.Handled = true;
if (Text.Length > 34) e.Handled = true;

arman_Delta2002
جمعه 13 خرداد 1390, 08:13 صبح
بفرما درست شد:بامزه:

Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not ((e.KeyChar >= Convert.ToChar("0")) And (e.KeyChar <= Convert.ToChar("9"))) Then
e.Handled = True
End If
If (IIf(((e.KeyChar = Convert.ToChar(8)) AndAlso (DirectCast(sender, TextBox).Text.Trim <> "")), 1, 0) <> 0) Then
DirectCast(sender, TextBox).Text = DirectCast(sender, TextBox).Text.Remove((DirectCast(sender, TextBox).Text.Length - 1), 1)
End If
TextBox1.Select(Len(TextBox1.Text), 0)
End Sub

Mani_rf
جمعه 13 خرداد 1390, 17:03 عصر
من به دنبال این عملیات تو ASP.net بودم.ولی دلم نیومد این کدو واسطون نزارم

if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) e.Handled = true;
if (Text.Length > 34) e.Handled = true;
این تیکه کد برای C# هست
موفق باشید


این کار را در ASP.Net باید از طریق جاوا و یا آژاکس انجام دهی . ASP.Net سرور ساید است و انجام این کار با آن منتقی نیست چون صفحه را پس از ورود هر کاراکتر رفرش می کند.