PDA

View Full Version : سوال: وارد کردن فقط عدد در Textbox



سعید کشاورز
پنج شنبه 13 مهر 1391, 00:08 صبح
دوستان واسه وارد کردن فقط عدد در Textbox از این کدهای استفاده کردم توی رویداد keypress تکس باکس

if (!char.IsControl(e.KeyChar)&& !char.IsDigit(e.KeyChar) && e.KeyChar != '.')

{
e.Handled = true;
}
یکی توضیح میده اینا چی کار میکنن؟ آخه از یه سایت خارجی گرفتم اینو نمیدونم چی به چیه

harani
پنج شنبه 13 مهر 1391, 01:23 صبح
از این استفاده کن (تو KeyPress تکست باکست) بهتره :


if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))//a
e.Handled = true;//b

جزئیاتشم که مشخصه متوجه میشی !؟
KeyChar که یعنی هر کاراکتری که کاربر بواسطه کیبورد درون تکست باکس وارد میکند.
گفتم که اگه کاراکترها بین اعداد صفر تا 9 نبودند اجازه وارد کردن رو ندهد .

voice.of.silence
پنج شنبه 13 مهر 1391, 10:05 صبح
سلام دوست عزیز:
من برای این کار که تکستباکس فقط عدد را قبول کند از این کد استفاده می کنم که خوب جواب میده.
if (char.IsLetter(e.KeyChar)==true)
{
e.Handled = true;
}

موفق باشی
Voice of Silence

سعید کشاورز
پنج شنبه 13 مهر 1391, 12:26 عصر
از این استفاده کن (تو KeyPress تکست باکست) بهتره :


if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))//a
e.Handled = true;//b

جزئیاتشم که مشخصه متوجه میشی !؟
KeyChar که یعنی هر کاراکتری که کاربر بواسطه کیبورد درون تکست باکس وارد میکند.
گفتم که اگه کاراکترها بین اعداد صفر تا 9 نبودند اجازه وارد کردن رو ندهد .
مرسی..فقط یه سوال..
e.Handled=True یعنی چی؟

سعید کشاورز
پنج شنبه 13 مهر 1391, 12:31 عصر
سلام دوست عزیز:
من برای این کار که تکستباکس فقط عدد را قبول کند از این کد استفاده می کنم که خوب جواب میده.
if (char.IsLetter(e.KeyChar)==true)
{
e.Handled = true;
}

موفق باشی
Voice of Silence
مرسی دوست عزیز..اگه اون خط شرط رو توضیح بدی ممنون میشم

harani
پنج شنبه 13 مهر 1391, 13:12 عصر
مرسی..فقط یه سوال..
e.Handled=True یعنی چی؟

گفتم که e.handle اگه true باشه .یعنی که کاربر حق وارد کردن هیچ کاراکتر به جز کاراکترهای شرط if را نداره .

danialafshari
پنج شنبه 13 مهر 1391, 13:31 عصر
سلام
دوستان تمامی این روش ها مشکل داره، خواهشا این شیوه های غلط رو ترویج ندید!
اگه یک رشته ی شامل حروف هم درون اون تکس باکس Copy و بعد Paste کنید می بینید حروف رو هم میگیره پس خود این یه باگه !
آخه MaskedTextBox هست اونوقت بریم کد نویسی!
کافیه یک maskedTextBox بزاری و Mask اون رو روی Numeric بزاری و تعداد اعدادت هم تنظیم کنی همین !
موفق باشید

harani
پنج شنبه 13 مهر 1391, 14:27 عصر
سلام
دوستان تمامی این روش ها مشکل داره، خواهشا این شیوه های غلط رو ترویج ندید!
اگه یک رشته ی شامل حروف هم درون اون تکس باکس Copy و بعد Paste کنید می بینید حروف رو هم میگیره پس خود این یه باگه !
آخه MaskedTextBox هست اونوقت بریم کد نویسی!
کافیه یک maskedTextBox بزاری و Mask اون رو روی Numeric بزاری و تعداد اعدادت هم تنظیم کنی همین !
موفق باشید

بله حرف شما کاملاً درسته ولی اولاً شاید دوستمان بخواهد یک عددی درج کند که طول آن متغیر باشد .ماسک textBox برای زمانی است که کاربر میخواهد یک چیز مشخصی مانند شماره شناسنامه ,معدل , تاریخ و ... را وارد کند . البته درست میگید که اگه کاربر بخواهد از جایی کپی پیست کند حروف هم شامل میشه . خب میتونه تو رویداد KeyDown بنویسه :


private void textBox1_KeyDown(object sender, KeyEventArgs e) {//c
if (e.Control == true)//j
{
MessageBox.Show("Cut/Copy and Paste Options are disabled");//k
textBox1.Focus();//f
}
}


تو mouse Down هم بنویسه



private void textBox1_MouseDown(object sender, KeyEventArgs e) {//c

ContextMenu cm = new ContextMenu();//j
textBox1.ContextMenu = cm;//h
textBox1.Focus();//f
}


البته راه های آسونتر هم هست ولی فکر کنم برای دوستمون سخت باشه .

ashkan.comp
پنج شنبه 13 مهر 1391, 20:46 عصر
سلام دوست عزیز
اگه میخوای فقط عدد وارد کنی یکی از دوستان یه ابزار به نام txtpronet نوشته که تو همین سایته اگه یه جستجوی کوتاه بکنی حتما پیداش می کنی چندتا از خاصیت هاشو میگم ، خیلی کارو راحت می کنه
تایپ فقط فارسی در تکس باکس
تایپ فقط انگلیسی در تکس باکس
تایپ فقط عدد در تکس باکس
گذاشتن ویلگول بین اعداد مثل 120,000
....امیدوارم مفید باشه

Hadiir.net
چهارشنبه 13 شهریور 1398, 04:51 صبح
با این کد مشکل کپی پست هم حل می شود!



Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not Char.IsNumber(e.KeyChar) AndAlso Not Char.IsControl(e.KeyChar) Then
e.Handled = True
End If
End Sub








Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim digitsOnly As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex("[^\d]")
TextBox1.Text = digitsOnly.Replace(TextBox1.Text, "")
End Sub





f you want to allow decimals, add
AndAlso Not e.KeyChar = "."to the if statement in the KeyPress section.







اگر متن کپی شده در حافظه دارای اعداد باشد فقط اعداد جایگذاری می شوند و حروف زائد حذف می شوند.

Hadiir.net
چهارشنبه 13 شهریور 1398, 05:26 صبح
150695نمونه پروژه کدهای تست شده:

alex037
چهارشنبه 23 مهر 1399, 01:02 صبح
شما این کد را توی روی داد Keypress باری TextBox کپی کن ، امکان وارد کردن فقط عدد ممکن میشه و کپی پیست هم کار نمیکنه

if (!char.IsDigit(e.KeyChar))
{
if (e.KeyChar != '\b')
e.Handled = true;
}

M.sheaikhzadeh
چهارشنبه 23 مهر 1399, 10:05 صبح
اینم یه روش کلی که کاربر رو وادار می کنه فقط عدد تایپ کنه و Ctrl + v , راست کلیک رو غیر فعال می کنه :لبخند:

///ورودی فقط عدد
private void textbox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar));
}

///غیر فعال کردن Ctrl+V
private void textbox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyValue == 86)
{
e.Handled = true;
e.SuppressKeyPress = true;
}
}
///غیر فعال کردن راست کلیک
private void textbox1_MouseDown(object sender, MouseEventArgs e)
{
textbox1.ContextMenu = new ContextMenu();
}

kamran749
شنبه 26 مهر 1399, 07:33 صبح
شما این کد را توی روی داد Keypress باری TextBox کپی کن ، امکان وارد کردن فقط عدد ممکن میشه و کپی پیست هم کار نمیکنه

if (!char.IsDigit(e.KeyChar))
{
if (e.KeyChar != '\b')
e.Handled = true;
}


سلام
من این کد را امتحان کردم؛ درست نیست و کپی، پیست هم کار می کند و رشته و حروف وارد تکست باکس می شود؟؟

daniyaltjm
شنبه 26 مهر 1399, 13:21 عصر
تمامی این روش ها اشکالاتی دارن بعدا یک نمونه کد مینویسم که این مشکلات رو نداشته باشه...

daniyaltjm
شنبه 26 مهر 1399, 17:02 عصر
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if(!(e.KeyCode>= Keys.NumPad0 && e.KeyCode <=Keys.NumPad9 || e.KeyCode>= Keys.D0 && e.KeyCode<= Keys.D9 && ! e.Shift || e.KeyCode == Keys.Back))
{
e.SuppressKeyPress = true;
}
}



private void textBox1_TextChanged(object sender, EventArgs e)
{

for(int i =0; i<textBox1.Text.Length; i++)
{
if (textBox1.Text[i] == '0' || textBox1.Text[i]== '1' || textBox1.Text[i] == '2' || textBox1.Text[i] == '3'|| textBox1.Text[i] == '4' || textBox1.Text[i]== '5'|| textBox1.Text[i] == '6' || textBox1.Text[i] == '7'|| textBox1.Text[i] == '8' || textBox1.Text[i] == '9')
{
//هیچ کاری نکن
}
else
{
textBox1.Text = "";


}

}


}