PDA

View Full Version : BackSpace



shima2006
دوشنبه 30 شهریور 1388, 09:49 صبح
سلام دوستان

private void textbox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(e.KeyChar >= '0' && e.KeyChar <= '9'))
e.Handled = true;
}

چیکار کنم که BackSpace هم کار کنه؟

hamidinejad
دوشنبه 30 شهریور 1388, 10:05 صبح
شما بايد كد كليد فرستاده شده بفرستيد نه اينكه مقايسه رو انجام بدهبد

atryad
دوشنبه 30 شهریور 1388, 10: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, 10: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, 10:51 صبح
میتونی توی خاصیتkeydown از کد زیر استفاده کنید

کد:
if (e.KeyCode = Keys.Back) { }

این رو من نوشتم ولی پیغام خطا میده

keypress هم که گفتید ، خب نمی دونم این 32 رو چطوری باید اضافه کنم!

shima2006
دوشنبه 30 شهریور 1388, 11:56 صبح
این کد برای MSDN هست .
این یعنی چی؟

mahdi_7610
دوشنبه 30 شهریور 1388, 12: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, 13:05 عصر
این کد برای MSDN هست .

یعنی اینو از مثال های MSDN پیدا کردم

atryad
دوشنبه 30 شهریور 1388, 17: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, 08:22 صبح
mahdi_7610 دقیقا مثل کدتون رو نوشتم ولی بازم BackSpace کار نمی کنه:عصبانی++:

M.YasPro
سه شنبه 31 شهریور 1388, 08:46 صبح
سلام

mahdi_7610 دقیقا مثل کدتون رو نوشتم ولی بازم BackSpace کار نمی کنه:عصبانی++:

کدی که من دادم بهتون کار نمیکنه یا مشکلی داره ؟:متفکر:
من خیلی وقته که ازش توی برنامه هام استفاده میکنم .

shima2006
سه شنبه 31 شهریور 1388, 08: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, 09:16 صبح
if(e.KeyCode == Keys.Back)

mahdi_7610
سه شنبه 31 شهریور 1388, 09: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, 09:56 صبح
از همه دوستان متشکرم
همه روشهایی که گفتید کار می کنند
فرم من تو یک قسمت دیگه مشکل داشت که باعث میشد تغییراتم اعمال نشن:اشتباه:

powerboy2988
سه شنبه 05 آبان 1388, 08:04 صبح
از اين روش هم مي توني استفاده كني تو OnKeyPress



if (!((e.KeyChar >= '0' && e.KeyChar <= '9') || e.KeyChar == 8))

alnajon
شنبه 11 آذر 1391, 21: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, 10: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 هم کار میکنه