PDA

View Full Version : سوال: نوشتن عدد در textbox



maryam82
جمعه 24 مهر 1388, 01:06 صبح
با سلام
چگونه می توان در textbox فقط عدد یا فقط متن نوشت؟

ali_md110
جمعه 24 مهر 1388, 02:32 صبح
private void TextBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
int selPos = 0;

int regPos = 0;

TextBox temp = (TextBox)sender;

selPos = temp.SelectedText.IndexOf(".");

regPos = temp.Text.IndexOf(".");

nonNumberEntered = false;

if (regPos != -1 && (e.KeyCode == Keys.OemPeriod || e.KeyCode == Keys.Decimal))
{


if (selPos < 0)
{


nonNumberEntered = true;

}

}

if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9 || e.Modifiers != Keys.None)
{

if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9 || e.Modifiers != Keys.None)
{

if ((e.KeyCode != Keys.Back && e.KeyCode != Keys.OemPeriod && e.KeyCode != Keys.Decimal) || e.Modifiers != Keys.None)
{
nonNumberEntered = true;

}

}

}

}

private void TextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (nonNumberEntered == false) // قرار دهید فقط عدد وارد و برعکس فقط حروفtrue اگر در حالت
{

e.Handled = true;

}
}

private bool nonNumberEntered;

توی سازنده فرمتون کدهای زیر رو صدا بزنید

TextBox1.KeyDown += TextBox1_KeyDown;
TextBox1.KeyPress += TextBox1_KeyPress;

اَرژنگ
جمعه 24 مهر 1388, 02:48 صبح
private void TextBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
int selPos = 0;

int regPos = 0;

TextBox temp = (TextBox)sender;

selPos = temp.SelectedText.IndexOf(&quot;.&quot;);

regPos = temp.Text.IndexOf(&quot;.&quot;);

nonNumberEntered = false;

if (regPos != -1 && (e.KeyCode == Keys.OemPeriod || e.KeyCode == Keys.Decimal))
{


if (selPos < 0)
{


nonNumberEntered = true;

}

}

if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9 || e.Modifiers != Keys.None)
{

if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9 || e.Modifiers != Keys.None)
{

if ((e.KeyCode != Keys.Back && e.KeyCode != Keys.OemPeriod && e.KeyCode != Keys.Decimal) || e.Modifiers != Keys.None)
{
nonNumberEntered = true;

}

}

}

}

private void TextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (nonNumberEntered == false) // قرار دهید فقط عدد وارد و برعکس فقط حروفtrue اگر در حالت
{

e.Handled = true;

}
}
private bool nonNumberEntered;توی سازنده فرمتون کدهای زیر رو صدا بزنید

TextBox1.KeyDown += TextBox1_KeyDown;
TextBox1.KeyPress += TextBox1_KeyPress;

این کد زیادی شلوغه، استفاده زیادی و تودرتو از if اولین نشان بد بودن کد هست. اگر هم کد درست کار کند بازهم باید به اینکه ما این کد را برایه آدمها مینویسیم فکر کنیم، برایه بهینه شدنش به این نقاط توجه کنید: ۱.شما کد را برایه انسانها مینویسید، برایه خوانائیش چه پیشنهاداتی به فکر خودتان میاد؟ ۲.اینکه منطقاً با این شرائط if وجود چه شروطی را پیاده ریزی میکنید را در یک متد دیگر جداگانه با اسمی که گویایه اینکه متد چکاری انجام میده بنویسید. ۳.دلیال استفاده تو در تو if را بررسی کنید، آیا واقعا نمیشه ساده‌تر باشد؟ و اگر نه چرا؟ ۴.به جایه اینکه تمام ای کدها را به طریق کپی و پیست و اشتباهاتی که ممکن است برایه استفاده کننده‌اش پیش بیاد ، روش دیگری به نظرتان میرسه؟

Iran58
جمعه 24 مهر 1388, 07:16 صبح
فقط عدد

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

Iran58
جمعه 24 مهر 1388, 07:18 صبح
فقط حرف

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

Iran58
جمعه 24 مهر 1388, 07:27 صبح
فقط حرف

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

asefy2008
جمعه 24 مهر 1388, 08:53 صبح
دوست عزیز iran58 چند تایپیک پایین تر مشکل این کد گفته شده این کد در copy وpast مشکل داره.این رو نگاه کن:

http://barnamenevis.org/forum/showthread.php?t=184222

maryam82 شما کارتون بگید شاید بهتر بشه کمک کرد.
موفق باشید