PDA

View Full Version : سوال: محدود کردن textbox به پذیرش اعداد 0-9



dr_g
دوشنبه 19 مرداد 1388, 23:23 عصر
با سلام
من چطور می تونم ورودی مقادیر به تکست باکس فقط به اعدادمحدود کنم؟یعنی فقط بتونن اعداد0-9 وارد تکست باکس بشن

asefy2008
دوشنبه 19 مرداد 1388, 23:39 عصر
این رو در رویداد keypressبنویس:


if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
e.Handled = true;

البته در کپی و پیست مشکل داره . بنظرم از ماسکت تکست باکس استفاده کنی بهتره.(masked اگه اشتباه نکنم.)
موفق باشید

shima2006
سه شنبه 20 مرداد 1388, 09:38 صبح
حالا اگه بخواهیم کاربر علاوه بر اعداد صفر تا نه بتونه از BackSpace هم استفاده کنیم باید چیکار کرد؟

Reza_Yarahmadi
سه شنبه 20 مرداد 1388, 11:23 صبح
واسه رفع مشکل کپی و پیست میشه تا زمانی که کاربر از طریق کیبورد داره مقدار وارد میکنه از کد بالا استفاده کرد و وقتی مقداری پیست کرد از طریق رویداد TextChange چک کرد.

bool TextCheck = false;
bool KeyPressed = false;
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!KeyPressed)
{
if (!TextCheck)
{
TextCheck = true;
string Text = textBox1.Text;
textBox1.Text = "";
for (int i = 0; i < Text.Length; i++)
if (Convert.ToInt16(Text[i]) > 47 && Convert.ToInt16(Text[i]) < 58)
textBox1.Text += Text[i];
textBox1.Select(textBox1.TextLength, 0);
TextCheck = false;
}
KeyPressed = false;
}
}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
KeyPressed = true;
e.Handled = Char.IsDigit(e.KeyChar) == false && Char.IsControl(e.KeyChar) == false;
if (!char.IsDigit(e.KeyChar) && ((int)e.KeyChar) != 8)
KeyPressed = false;
}

alihassanabadi
دوشنبه 04 آبان 1388, 16:32 عصر
سلام به همه دوستان



حالا اگه بخواهیم کاربر علاوه بر اعداد صفر تا نه بتونه از BackSpace هم استفاده کنیم باید چیکار کرد؟




واسه رفع مشکل کپی و پیست میشه تا زمانی که کاربر از طریق کیبورد داره مقدار وارد میکنه از کد بالا استفاده کرد و وقتی مقداری پیست کرد از طریق رویداد TextChange چک کرد.

به جای این کار ها میتونیم
داخل رویداد keydown مقدار
کلید های backspace,del,shift,insert رو تعریف میکنیم تا کاربر بتونه از عمل کپی پیست و دکمه backspace
استفاده کنه
کد:



private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
{
if (textBox1.Text == "")
{
if (MessageBox.Show("جعبه تلفن خالی است لطفا تلفن را وارد کنید", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) == DialogResult.OK)
textBox1.Focus();
}
}
while (e.KeyValue > 57 || e.KeyValue < 48)
{
while (e.KeyValue < 96 || e.KeyValue > 105)
{
if (e.KeyValue == 107 || e.KeyValue == 16 || e.KeyValue == 18
|| e.KeyValue == 8 || e.KeyValue == 37 || e.KeyValue == 38
|| e.KeyValue == 13 || e.KeyValue == 39 || e.KeyValue == 40 || e.KeyValue == 46 || e.KeyValue==45
) break;
if (MessageBox.Show("درجعبه تلفن فقط اعداد0 تا 9 و+را میتوانید وارد کنید", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1) == DialogResult.OK)
{
textBox1.Focus();
textBox1.Text = null;
}
break;

}
break;
}
}

البته در این کد کاربر میتونه از+ هم استفاده کنه در غیر این صورت با پیغام مواجه میشه
من اینو برای فیلد تلفن نوشتم
با تشکر.

M.YasPro
سه شنبه 05 آبان 1388, 07:47 صبح
http://barnamenevis.org/forum/showthread.php?t=180578

powerboy2988
سه شنبه 05 آبان 1388, 08:02 صبح
بيا اينم يك component ............

ASKaffash
سه شنبه 05 آبان 1388, 10:29 صبح
با سلام
من چطور می تونم ورودی مقادیر به تکست باکس فقط به اعدادمحدود کنم؟یعنی فقط بتونن اعداد0-9 وارد تکست باکس بشن

سلام
کنترل MaskedTextBox برای همین کاره از خاصیت Masked استفاده کنید

pcweb99
سه شنبه 03 تیر 1393, 10:34 صبح
اگه بخوای فقط عدد 0-9 وارد بشه،در رویداد KeyPress مربوط به TextBox:


private void txtphonenumber_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
e.Handled = true;
}


اگه بخوای فقط حروف وارد بشه،در رویداد KeyPress مربوط به TextBox:


private void txtnamefamily_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsNumber(e.KeyChar))
e.Handled = true;
}

werowolfneh
شنبه 05 دی 1394, 22:16 عصر
اگه بخوای فقط عدد 0-9 وارد بشه،در رویداد KeyPress مربوط به TextBox:


private void txtphonenumber_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
e.Handled = true;
}


اگه بخوای فقط حروف وارد بشه،در رویداد KeyPress مربوط به TextBox:


private void txtnamefamily_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsNumber(e.KeyChar))
e.Handled = true;
}





!!!!!! سلام من این کد رو نوشتم درسته..فقط اگه بین اعداد بخام کاراکتر بزارم چه کدی بنویسم؟؟؟اخه تکست باکسم واسه تاریخ تولد هستش

reza_ali202000
یک شنبه 06 دی 1394, 23:03 عصر
سلام
اینم یه تکس باکس خیلی کامل هست.
http://barnamenevis.org/showthread.php?498054-textBox-%D9%88%DB%8C%DA%98%D9%87&p=2225087#post2225087