View Full Version : BackSpace
shima2006
دوشنبه 30 شهریور 1388, 10:49 صبح
سلام دوستان
private void textbox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))
e.Handled = true;
}
چیکار کنم که BackSpace هم کار کنه؟
hamidinejad
دوشنبه 30 شهریور 1388, 11:05 صبح
شما بايد كد كليد فرستاده شده بفرستيد نه اينكه مقايسه رو انجام بدهبد
atryad
دوشنبه 30 شهریور 1388, 11:18 صبح
سلام دوستان
privatevoid textbox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))
e.Handled = true;
}
چیکار کنم که BackSpace هم کار کنه؟
میتونی توی خاصیتkeydown از کد زیر استفاده کنید
if (e.KeyCode = Keys.Back)
{
}
اما توی keyprees باید کد کلید رو قرار بدی یعنی برای backSpase کد 32
با تشکر
M.YasPro
دوشنبه 30 شهریور 1388, 11:42 صبح
سلام
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 هست .
shima2006
دوشنبه 30 شهریور 1388, 11:51 صبح
میتونی توی خاصیتkeydown از کد زیر استفاده کنید
کد:
if (e.KeyCode = Keys.Back) { }
این رو من نوشتم ولی پیغام خطا میده
keypress هم که گفتید ، خب نمی دونم این 32 رو چطوری باید اضافه کنم!
shima2006
دوشنبه 30 شهریور 1388, 12:56 عصر
این کد برای MSDN هست .
این یعنی چی؟
mahdi_7610
دوشنبه 30 شهریور 1388, 13:55 عصر
سلام
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;
}
}
M.YasPro
دوشنبه 30 شهریور 1388, 14:05 عصر
این کد برای MSDN هست .
یعنی اینو از مثال های MSDN پیدا کردم
atryad
دوشنبه 30 شهریور 1388, 18:37 عصر
این رو من نوشتم ولی پیغام خطا میده
keypress هم که گفتید ، خب نمی دونم این 32 رو چطوری باید اضافه کنم!
if (e.KeyCode = Keys.Back)
{
}این توی keydown جواب میده برای اینکه توی keyprees استفاده کنی
به طور مثال
private void textBox5_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 8)
textBox6.Focus();
}
shima2006
سه شنبه 31 شهریور 1388, 09:22 صبح
mahdi_7610 دقیقا مثل کدتون رو نوشتم ولی بازم BackSpace کار نمی کنه:عصبانی++:
M.YasPro
سه شنبه 31 شهریور 1388, 09:46 صبح
سلام
mahdi_7610 دقیقا مثل کدتون رو نوشتم ولی بازم BackSpace کار نمی کنه:عصبانی++:
کدی که من دادم بهتون کار نمیکنه یا مشکلی داره ؟:متفکر:
من خیلی وقته که ازش توی برنامه هام استفاده میکنم .
shima2006
سه شنبه 31 شهریور 1388, 09:49 صبح
میتونی توی خاصیت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'
M.YasPro
سه شنبه 31 شهریور 1388, 10:16 صبح
if(e.KeyCode == Keys.Back)
mahdi_7610
سه شنبه 31 شهریور 1388, 10:23 صبح
mahdi_7610 دقیقا مثل کدتون رو نوشتم ولی بازم BackSpace کار نمی کنه:عصبانی++:
سلام
کد شما فقط باعث میشه کلیدهایی که مقادیر عددی وارد میکنند کار کنند . که شما با کدی که گذاشتم قادر خواهید بود از کلید BackSpace هم استفاده کنید .
من کد شما را تغییر دادم تا BackSpace هم کار کنه .
کد خودم هم کار می کنه .
کد شما باید به این صورت باشه . اون قسمت پررنگ را به کد خودتون اضافه کنید.
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(e.KeyChar >= '0' && e.KeyChar <= '9') && (e.KeyChar != '\b'))
e.Handled = true;
}
یه نمونه هم گذاشتم
shima2006
سه شنبه 31 شهریور 1388, 10:56 صبح
از همه دوستان متشکرم
همه روشهایی که گفتید کار می کنند
فرم من تو یک قسمت دیگه مشکل داشت که باعث میشد تغییراتم اعمال نشن:اشتباه:
powerboy2988
سه شنبه 05 آبان 1388, 09:04 صبح
از اين روش هم مي توني استفاده كني تو OnKeyPress
if (!((e.KeyChar >= '0' && e.KeyChar <= '9') || e.KeyChar == 8))
alnajon
شنبه 11 آذر 1391, 22:25 عصر
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;
}
}
pcweb99
سه شنبه 03 تیر 1393, 11:29 صبح
اگه بخوای فقط عدد 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 هم کار میکنه
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.