PDA

View Full Version : سوال: تکست باکس عددی



razghandi_20344
پنج شنبه 17 شهریور 1390, 18:10 عصر
سلام به دوستان عزیز
کسی می تونه در زمینه vb.netاونم در مورد اینکه چطوری یه تکست باکس عددی داشته باشیم بهم کمک کنه
البته یه سری کد گرفتم اما باید در رویداد key press تکست باکس نوشت که با برنامه ای که من کار میکنم همچین رویدادی نیست
ممنون

oliya24
پنج شنبه 17 شهریور 1390, 18:26 عصر
یه جستجو بکن تو همین سایت پیدا میکنی خود بنده 2 بار این مطلب رو گذاشتم

h_a_m_i_d
پنج شنبه 17 شهریور 1390, 20:34 عصر
عزیزم روی textchenged ان دستور زیر را بنویس ببین مشکلت حل میشه
dim s
s=(mid(txt1.text,len(txt1.text)-1,len(txt1.text
if s=val( s)then
else
txt1.text=mid(txt1.text,1,len(txt1.text)-1
end if
""=s
خوب اینم یک راه
فقط در این برنامه اسم text رو برابر txt1 قرار بدین ببینین کارتون حل میشه یا نه
اگر راهای دیگه هم خواستین تو همین تایپیک بزنین تا جواب بدم

alicomputer
یک شنبه 20 شهریور 1390, 22:01 عصر
Private Sub TextBox10_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox10.KeyPress


' If Not IsNumeric(e.KeyChar) Then e.Handled = True

End Sub

mdssoft
یک شنبه 13 آذر 1390, 15:23 عصر
خیلی از جاها میشه نمونه این کار رو با JQuery ببینید اما اینو با جاوا اسکریپت خام میشه درآورد که خیلی کاربردی تر است.

تکس باکس عددی Numeric TextBox Javascript (http://mds-soft.persianblog.ir/post/126/)

mgh64120
دوشنبه 14 آذر 1390, 00:04 صبح
سلام دوست عزيز
كد زير رو درون رويداد KeyPress تكست باكس قرار بده.

If Not (((((Asc(e.KeyChar) >= 48) And (Asc(e.KeyChar) <= 57))) Or (Asc(e.KeyChar) = Keys.Back))) Then
e.KeyChar = String.Empty
End If

موفق باشيد.

tto_baran
دوشنبه 28 آذر 1390, 05:46 صبح
سلام دوست عزيز
كد زير رو درون رويداد KeyPress تكست باكس قرار بده.

If Not (((((Asc(e.KeyChar) >= 48) And (Asc(e.KeyChar) <= 57))) Or (Asc(e.KeyChar) = Keys.Back))) Then
e.KeyChar = String.Empty
End If

موفق باشيد.

در این صورت کار بر نمیتواند اعداد منفی و اعداد اعشاری را وارد کند .
از طرفی ایشان به وضوح گفته اند که نمیخواهند از KeyPress استفاده کنند .
لطفا اصلاح فرمایید .

mgh64120
دوشنبه 28 آذر 1390, 23:39 عصر
سلام

در این صورت کار بر نمیتواند اعداد منفی و اعداد اعشاری را وارد کند .


If Not (((((Asc(e.KeyChar) >= 48) And (Asc(e.KeyChar) <= 57))) Or (Asc(e.KeyChar) = Keys.Back) Or (Asc(e.KeyChar) = Asc(".")) Or (Asc(e.KeyChar) = Asc("-")))) Then
e.KeyChar = String.Empty
End If
If (Asc(e.KeyChar) = Asc(".")) And InStr(Ctrl.Text, ".", CompareMethod.Binary) > 0 Then
e.KeyChar = String.Empty
Beep()
End If
'
If (Asc(e.KeyChar) = Asc(".")) And Ctrl.Text = String.Empty Then
Ctrl.Text = "0" : Ctrl.SelectionStart = 1
End If

و

از طرفی ایشان به وضوح گفته اند که نمیخواهند از KeyPress استفاده کنند .

اين هم بدون KeyPress ولي فكر نكنم زياد جالب باشه.

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
TextBox1.Text = Trim(TextBox1.Text)
Dim strvalid As String = "0123456789.-"
Dim ctr As Byte = 1
'
Do Until ctr = Len(Trim(TextBox1.Text)) + 1
If InStr(strvalid, Mid(TextBox1.Text, ctr, 1)) = 0 Then
TextBox1.Text = Strings.Left(TextBox1.Text, ctr - 1) + Strings.Right(TextBox1.Text, TextBox1.Text.Length - ctr)
Else
ctr = ctr + 1
End If
Loop
SendKeys.Send("{End}")
End Sub


موفق باشيد...

tto_baran
سه شنبه 29 آذر 1390, 21:53 عصر
ضمن تشکر از زحمات شما

کد هایی که برای KeyPress نوشته شده است از بسیاری لحاظ کامل و مفید است . _ هر چند که مد نظر razghandi_20344 نیست _ ولی متاسفانه کار بر میتواند بار ها و بار ها به هر تعداد و هر جایی علامت (-) وارد کند . مثلا 3-4-5-6-

در کد های دوم که از KeyPress استفاده نشده است علاوه بر مشکل بالا کار بر می تواند چندین بار ممیز وارد کند مثلا 2.3.5.6 که مقداری است نامعتبر و قطعا سبب مشکلاتی خواهد شد .

و اگر کار بر در KeyPress برای رویداد فشرده شدن کلید Enter کد هایی نوشته باشد . کاملا بی اثر خواهد بود .

یادمان باشد که میخواهیم کنترلی بسازیم که عددی باشد

mgh64120
چهارشنبه 30 آذر 1390, 12:11 عصر
ضمن تشکر از زحمات شما
کد هایی که برای KeyPress نوشته شده است از بسیاری لحاظ کامل و مفید است . _ هر چند که مد نظر razghandi_20344 نیست _ ولی متاسفانه کار بر میتواند بار ها و بار ها به هر تعداد و هر جایی علامت (-) وارد کند . مثلا 3-4-5-6-
یادمان باشد که میخواهیم کنترلی بسازیم که عددی باشد

سلام دوست عزيز tto_baran. ممنون از توجه شما.
اون قسمتي كه فرموديد كاربر بارها و بارها ميتواند هر جايي علامت(-) وارد كند اصلاح شد، علاوه بر اون كاربر وقت علامت منفي رو در ابتداي متن عددي ميتواند قرار دهد نه در وسط و انتها!

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not (((((Asc(e.KeyChar) >= 48) And (Asc(e.KeyChar) <= 57))) Or (Asc(e.KeyChar) = Keys.Back) Or (Asc(e.KeyChar) = Asc(".")) Or (Asc(e.KeyChar) = Asc("-")))) Then
e.KeyChar = String.Empty
End If
If Asc(e.KeyChar) = Asc(".") And InStr(TextBox1.Text, ".", CompareMethod.Binary) > 0 Then
e.KeyChar = String.Empty
Beep()
End If
If (Asc(e.KeyChar) = Asc("-") And ((InStr(TextBox1.Text, "-", CompareMethod.Binary) > 0) Or (TextBox1.SelectionStart <> 0))) Then
e.KeyChar = String.Empty
Beep()
End If
If (Asc(e.KeyChar) = Asc(".")) And TextBox1.Text = String.Empty Then
TextBox1.Text = "0" : TextBox1.SelectionStart = 1
End If
End Sub


و اگر کاربر در KeyPress برای رویداد فشرده شدن کلید Enter کد هایی نوشته باشد . کاملا بی اثر خواهد بود .

خوب، اين كدهايي كه مي فرماييد براي فشردن كليد Enter نوشتن رو اگر در ابتداي رويداد KeyPress بزارن اجرا ميشه.
ولي معمولا كاربران ميخواهند با فشردن كليد Enter بر روي TextBox فوكوس به كنترل بعدي برود.(TAB)
كه اين كار رو ميشه در رويداد KeyDown انجام داد :

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then SendKeys.Send("{TAB}")
End Sub

موفق باشيد...

tto_baran
سه شنبه 06 دی 1390, 07:25 صبح
mgh64120 گرامی سلام ، خبلی ممنون و سپاسگزارم . همچنین بسیار متشکر از این که احساس مسئولیت کرده و به سوالات دوستان پاسخ می د هید در خصوص کد اخیر که گذاشته اید ، بسیار به هدف مطلوب نزدیک تر شده اید . به نظر حقیر تکست باکس عددی باید حتما Enter را قبول کند . و از آنجایی که نمیخواهم حالت اورجینال کد ها را از بین ببرم از دستکاری آن در سایت معذورم ولی از شما خواهش میکنم که خود تان این قسمت را اضا فه کنید . تا از هر نظر کامل شود . و در مراجعات بعدی دوستان کد کامل تری را دریافت کنند .

این هم یکصدمین تشکر .

mgh64120
سه شنبه 06 دی 1390, 19:03 عصر
سلام دوست عزيز

mgh64120 گرامی سلام ، خبلی ممنون و سپاسگزارم . همچنین بسیار متشکر از این که احساس مسئولیت کرده و به سوالات دوستان پاسخ می د هید
خواهش ميكنم. مشكلات و سوالات زيادي از من رو دوستان در همين سايت رفع كردند، من هم وظيفه ي خودم ميدونم تا جايي كه ممكن هست و در حد توان به سئوالات پاسخ بدم و همچنين از نكته سنجي و پيگيري شما در پاسخها خيلي متشكرم.

به نظر حقیر تکست باکس عددی باید حتما Enter را قبول کند . و از آنجایی که نمیخواهم حالت اورجینال کد ها را از بین ببرم از دستکاری آن در سایت معذورم ولی از شما خواهش میکنم که خود تان این قسمت را اضا فه کنید . تا از هر نظر کامل شود . و در مراجعات بعدی دوستان کد کامل تری را دریافت کنند .

شما بفرمائيد چه كدي رو براي كليد Enter در نظر داريد تا من كد رو كامل كنم.

این هم یکصدمین تشکر
خيلي ممنون. اين هم از 76امين تشكر.
منتظر پاسخ و نظرات سازنده شما دوست گرامي هستم.
موفق باشيد...