با سلام
من چطور می تونم ورودی مقادیر به تکست باکس فقط به اعدادمحدود کنم؟یعنی فقط بتونن اعداد0-9 وارد تکست باکس بشن
با سلام
من چطور می تونم ورودی مقادیر به تکست باکس فقط به اعدادمحدود کنم؟یعنی فقط بتونن اعداد0-9 وارد تکست باکس بشن
این رو در رویداد keypressبنویس:
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
e.Handled = true;
البته در کپی و پیست مشکل داره . بنظرم از ماسکت تکست باکس استفاده کنی بهتره.(masked اگه اشتباه نکنم.)
موفق باشید
حالا اگه بخواهیم کاربر علاوه بر اعداد صفر تا نه بتونه از BackSpace هم استفاده کنیم باید چیکار کرد؟
واسه رفع مشکل کپی و پیست میشه تا زمانی که کاربر از طریق کیبورد داره مقدار وارد میکنه از کد بالا استفاده کرد و وقتی مقداری پیست کرد از طریق رویداد 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;
}
سلام به همه دوستان
حالا اگه بخواهیم کاربر علاوه بر اعداد صفر تا نه بتونه از BackSpace هم استفاده کنیم باید چیکار کرد؟
به جای این کار ها میتونیمواسه رفع مشکل کپی و پیست میشه تا زمانی که کاربر از طریق کیبورد داره مقدار وارد میکنه از کد بالا استفاده کرد و وقتی مقداری پیست کرد از طریق رویداد TextChange چک کرد.
داخل رویداد keydown مقدار
کلید های backspace,del,shift,insert رو تعریف میکنیم تا کاربر بتونه از عمل کپی پیست و دکمه backspace
استفاده کنه
کد:
privatevoid 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;
}
}
البته در این کد کاربر میتونه از+ هم استفاده کنه در غیر این صورت با پیغام مواجه میشه
من اینو برای فیلد تلفن نوشتم
با تشکر.
بيا اينم يك component ............
اگه بخوای فقط عدد 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;
}
سلام
اینم یه تکس باکس خیلی کامل هست.
https://barnamenevis.org/showthread.p...87#post2225087