PDA

View Full Version : حرفه ای: محدود کردن تکست باکس vb.net



saeidmobashery
دوشنبه 29 خرداد 1402, 11:41 صبح
سلام دوستان بنده با کد زیر تایپ داخل تکست باکس را به اعداد محدود کردم ولی متاسفانه کلید کنترل + A و کنترل + V نیز از کار افتاد چطور می‌تونم این دو کلید ترکیبی را فیلتر نکنم ؟


Private Sub DailyPassword_TextBox_KeyPress(sender As Object, e As KeyPressEventArgs) Handles DailyPassword_TextBox.KeyPress
If Not IsNumeric(e.KeyChar) And e.KeyChar <> Convert.ToChar(Keys.Back) Then
e.Handled = True
End If
End Sub

پرستو پارسایی
دوشنبه 29 خرداد 1402, 21:08 عصر
برای حل مشکل باید از رویداد KeyDown برای TextBox استفاده کنید. در این رویداد، می‌توانید بررسی کنید که آیا کاربر کلید کنترل را فشار داده است یا نه. اگر کلید کنترل فشار داده نشده باشد، کد اعتبارسنجی محدودیت اعداد را اجرا کنید.

Private Sub DailyPassword_TextBox_KeyDown(sender As Object, e As KeyEventArgs) Handles DailyPassword_TextBox.KeyDown
If e.Control AndAlso (e.KeyCode = Keys.A OrElse e.KeyCode = Keys.V) Then
' اگر کلید کنترل + A یا کنترل + V فشار داده شده بود، اجازه دهید کاربر از آنها استفاده کند.
Return
End If


If Not Char.IsDigit(ChrW(e.KeyCode)) AndAlso e.KeyCode <> Keys.Back Then
' اگر کاربر یک کاراکتر غیر از اعداد یا کلید backspace را فشار داده بود، اجازه ندهید که آن را در TextBox وارد کند.
e.SuppressKeyPress = True
End If
End Sub



در این کد، با استفاده از Char.IsDigit بررسی می‌کنیم که آیا کاربر یک عدد وارد کرده است یا نه. اگر عدد وارد شده باشد، کد اجرا می‌شود و TextBox به صورت معمول به روزرسانی می‌شود. اگر کاربر یک کاراکتر غیر از اعداد و کلید backspace را فشار داده باشد، e.SuppressKeyPress را به True تنظیم می‌کنیم تا اجازه ورود این کاراکتر به TextBox را ندهیم. همچنین، اگر کاربر کلید کنترل + A یا کنترل + V را فشار داده باشد، کد تنظیم شده به صورت پیش‌فرض برای TextBox اجازه می‌دهد تا از این کلیدها استفاده کنید

saeidmobashery
سه شنبه 30 خرداد 1402, 00:15 صبح
سلام سرکار خانم پارسایی
انشاالله در صحت و سلامت باشید

دکمه کنترل با A و V کار کرد ولی شماره‌های قسمت numlock از کار افتاد
همچنین اگر کیبورد فارسی باشد کاراکترهای فارسی همانطور که در اسکرین می‌بینید اجازه تایپ پیدا کردند که اگر بتوان از تایپ آن‌ها جلوگیری کرد عالیه در واقع از تایپ در حالت کیبورد غیر لاتین جلوگیری شود عالیه

پرستو پارسایی
سه شنبه 30 خرداد 1402, 00:40 صبح
برای جلوگیری از تایپ کاراکترهای غیر لاتین و فقط قابلیت استفاده از Ctrl + A و Ctrl + V و فعال کردن NumLock در صورت غیرفعال بودن آن، می‌توانید از کد زیر استفاده کنید:

Private Sub DailyPassword_TextBox_KeyPress(sender As Object, e As KeyPressEventArgs) Handles DailyPassword_TextBox.KeyPress
If Not Char.IsDigit(e.KeyChar) Then
e.Handled = True
End If
End Sub


Private Sub DailyPassword_TextBox_KeyDown(sender As Object, e As KeyEventArgs) Handles DailyPassword_TextBox.KeyDown
If e.KeyCode = Keys.NumLock Then
If Not My.Computer.Keyboard.NumLock Then
My.Computer.Keyboard.SendKeys("{NUMLOCK}")
End If
ElseIf (e.Control AndAlso e.KeyCode = Keys.A) OrElse (e.Control AndAlso e.KeyCode = Keys.V) Then
' Allow Ctrl + A and Ctrl + V
Else
e.SuppressKeyPress = True
End If
End Sub

saeidmobashery
سه شنبه 30 خرداد 1402, 01:18 صبح
عالی بود خانم پارسایی ، سپاس از زحمات شما