سلام دوستان
private void textbox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))
e.Handled = true;
}
چیکار کنم که BackSpace هم کار کنه؟
سلام دوستان
private void textbox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))
e.Handled = true;
}
چیکار کنم که BackSpace هم کار کنه؟
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 04 تیر 1393 در 15:12 عصر
شما بايد كد كليد فرستاده شده بفرستيد نه اينكه مقايسه رو انجام بدهبد
سلام
private bool nonNumberEntered = false;
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
nonNumberEntered = false;
if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
{
if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
{
if (e.KeyCode != Keys.Back)
{
nonNumberEntered = true;
}
}
}
}
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (nonNumberEntered == true)
{
e.Handled = true;
}
}
این کد برای MSDN هست .
این رو من نوشتم ولی پیغام خطا میدهمیتونی توی خاصیتkeydown از کد زیر استفاده کنید
کد:
if (e.KeyCode = Keys.Back) { }
keypress هم که گفتید ، خب نمی دونم این 32 رو چطوری باید اضافه کنم!
این کد برای MSDN هست .
این یعنی چی؟
سلام
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < '0' || e.KeyChar > '9') && (e.KeyChar != '\b'))
{
e.Handled = true;
}
else
{
e.Handled = false;
}
}
یعنی اینو از مثال های MSDN پیدا کردماین کد برای MSDN هست .
آخرین ویرایش به وسیله atryad : دوشنبه 30 شهریور 1388 در 23:57 عصر
mahdi_7610 دقیقا مثل کدتون رو نوشتم ولی بازم BackSpace کار نمی کنه![]()
سلامکدی که من دادم بهتون کار نمیکنه یا مشکلی داره ؟mahdi_7610 دقیقا مثل کدتون رو نوشتم ولی بازم BackSpace کار نمی کنه![]()
من خیلی وقته که ازش توی برنامه هام استفاده میکنم .
این پیغام رو میدهمیتونی توی خاصیتkeydown از کد زیر استفاده کنید
کد:
if (e.KeyCode = Keys.Back) { }
Property or indexer 'System.Windows.Forms.KeyEventArgs.KeyCode' cannot be assigned to-- it is read onlyو همینطور میگهcannot implicitly convert type 'System.window.forms.keys' to 'bool'
if(e.KeyCode == Keys.Back)
سلام
کد شما فقط باعث میشه کلیدهایی که مقادیر عددی وارد میکنند کار کنند . که شما با کدی که گذاشتم قادر خواهید بود از کلید BackSpace هم استفاده کنید .
من کد شما را تغییر دادم تا BackSpace هم کار کنه .
کد خودم هم کار می کنه .
کد شما باید به این صورت باشه . اون قسمت پررنگ را به کد خودتون اضافه کنید.
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(e.KeyChar >= '0' && e.KeyChar <= '9') && (e.KeyChar != '\b'))
e.Handled = true;
}
یه نمونه هم گذاشتم
از همه دوستان متشکرم
همه روشهایی که گفتید کار می کنند
فرم من تو یک قسمت دیگه مشکل داشت که باعث میشد تغییراتم اعمال نشن![]()
از اين روش هم مي توني استفاده كني تو OnKeyPress
if (!((e.KeyChar >= '0' && e.KeyChar <= '9') || e.KeyChar == 8))
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;
}
}
اگه بخوای فقط عدد 0-9 وارد بشه دیگه نیازی به این همه شرط و شروط نداره،در رویداد KeyPress مربوط به TextBox مورد نظر:
private void txtphonenumber_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
e.Handled = true;
}
اینجوریBackSpace هم کار میکنه
آخرین ویرایش به وسیله pcweb99 : سه شنبه 03 تیر 1393 در 10:41 صبح