PDA

View Full Version : آموزش: نوشتن فقط حروف در داخل تکست باکس



hamidrezax1
پنج شنبه 11 آذر 1400, 17:52 عصر
وقت بخیر دوستان عزیز
اگر خواستید فقط درون یک تکست باکس حروف قرار بدین و به کاربر اچازه وارد کردن عدد ندید میتونید از این کد توی رویداد کی پرس (keyperess)استفاده کنید.موفق باشید



If ((e.KeyChar >= "a" And e.KeyChar <= "z") Or (e.KeyChar >= "A" And e.KeyChar <= "Z") And (e.KeyChar >= "آ" And e.KeyChar <= "ی")) Then
Else
If (e.KeyChar = Convert.ToChar(Keys.Back) or e.KeyChar = Convert.ToChar(Keys.Space)) Then
Else
e.Handled = True
End If


End If

Hossein Bazyan
شنبه 17 دی 1401, 13:09 عصر
سلام
من ایده بهتری دارم . ابتدا در یک مدول تابع زیر رو بسازید :


Public Sub IsNumeric4TextBox(ByVal txtToCheck As TextBox, ByVal e As System.Windows.Forms.KeyPressEventArgs, ByVal InsertPlus As Boolean) If e.KeyChar = "." Then e.KeyChar = ","
Dim m = AscW(e.KeyChar)
', 44
'. 46
If m = 46 Then m = 44
Select Case m 'AscW(e.KeyChar)
Case 48 To 57
e.Handled = False
Case 45 ' -
e.Handled = False
Case 44 ' cama
CamaChek = txtToCheck.Text.Split(",")
If CamaChek.Length = 1 Then
e.Handled = False
Else
e.Handled = True
Beep()
End If
Case 8 ' Backspace
e.Handled = False


Case 43
If InsertPlus Then
e.Handled = False
Else
e.Handled = True
End If
Case Else
e.Handled = True
Beep()
End Select
End Sub

سپس در رویداد KeyPress کد زیر را دخل کنید


Private Sub TextBox1_KeyPress_1(sender As Object, e As KeyPressEventArgs) Handles TextBox2.KeyPress, TextBox1.KeyPress IsNumeric4TextBox(sender, e)
End Sub

خوبی این روش اینه که میتوانید همه تکست باکسها رو با هم گروه بندی کنید و نمیخواد برای تک تک انها کد بنویسید.

البته تابع بالایی رو میتوانید خودتان اغییر دهید.
من برای زبان هلندی طراحی کردم (مثلا باید . به , تبدیل شود ) و نمیتوان بیشتر از یکی از اینها رو داشت که بسته به نیاز میتوانید تغییر دهید.

Hossis
یک شنبه 18 دی 1401, 23:45 عصر
سلام
من ایده بهتری دارم . ابتدا در یک مدول تابع زیر رو بسازید :


Public Sub IsNumeric4TextBox(ByVal txtToCheck As TextBox, ByVal e As System.Windows.Forms.KeyPressEventArgs, ByVal InsertPlus As Boolean) If e.KeyChar = "." Then e.KeyChar = ","....
End Sub

خوبی این روش اینه که میتوانید همه تکست باکسها رو با هم گروه بندی کنید و نمیخواد برای تک تک انها کد بنویسید.

البته تابع بالایی رو میتوانید خودتان اغییر دهید.
من برای زبان هلندی طراحی کردم (مثلا باید . به , تبدیل شود ) و نمیتوان بیشتر از یکی از اینها رو داشت که بسته به نیاز میتوانید تغییر دهید.
نیازی به این همه کد نیست
برای چند تکست باکس میشه یک بار کد رو نوشت و رویداد کی پرز همه تکست باکس ها رو به همون یکی هندل کرد.
ساده اش هم اینه (تو رویداد keypress)
Dim num As String = "01234546789" & Chr(Keys.Back)
If num.Contains(e.KeyChar) Then e.Handled = True

Hossein Bazyan
دوشنبه 19 دی 1401, 11:45 صبح
نیازی به این همه کد نیست
برای چند تکست باکس میشه یک بار کد رو نوشت و رویداد کی پرز همه تکست باکس ها رو به همون یکی هندل کرد.
ساده اش هم اینه (تو رویداد keypress)
Dim num As String = "01234546789" & Chr(Keys.Back)
If num.Contains(e.KeyChar) Then e.Handled = True




همین کار رو تابع بالایی هم انجام میده اما اگه یه تابع داشته باشی میتونی به شیوه دلخواه تغییرات رو توش انجام بدی. مثلا در زبان هلندی جای (.) و (,) در اعداد فرق میکنه یا اینکه مثلا بخوای فقط اعداد منفی بگیره یا برعکس خلاصه هر تغییری لازم باشه میشه انجام داد.
اما کد شما تک خطیه و اینم یه حسن خیلی خوبیه ..