PDA

View Full Version : وارد کردن فقط عدد منفی در Textbox



LEADER.OF.HELL
جمعه 09 آبان 1393, 03:40 صبح
با سلام
میخوام textbox فقط عدد منفی بشه داخلش نوشت یعنی اول عدد "-" داشته باشه
چطوری درستش کنم
مرسی

dele_ghamgin_2008
جمعه 09 آبان 1393, 03:43 صبح
با سلام
میخوام textbox فقط عدد منفی بشه داخلش نوشت یعنی اول عدد "-" داشته باشه
چطوری درستش کنم
مرسی

در کد زیر بجای 98 ، منفی بذار




private void txtAdd_TextChanged(object sender, EventArgs e)
{
// جلوگیری از پاک کردن 98 ابتدایی می کند
if (txtAdd.Text.Length <= 2 && txtAdd.Text != "98")
{
txtAdd.Text = "98";
txtAdd.Select(2, 0);
}
}

LEADER.OF.HELL
جمعه 09 آبان 1393, 04:05 صبح
در کد زیر بجای 98 ، منفی بذار




private void txtAdd_TextChanged(object sender, EventArgs e)
{
// جلوگیری از پاک کردن 98 ابتدایی می کند
if (txtAdd.Text.Length <= 2 && txtAdd.Text != "98")
{
txtAdd.Text = "98";
txtAdd.Select(2, 0);
}
}



با این کد شما فقط میشه 2 تا کاراکتر نوشت و اینکه غیر از عدد حروف هم میشه نوشت
منظور من از عدد منفی اینکه من خودم فقط بتونم بنویسم مثل -500 یا -8958
یعنی نتونم مثلا بنویسم 500 یا 8958

pedram.11
جمعه 09 آبان 1393, 10:49 صبح
با اجازه یکم تغییر دادم:
private void txtAdd_TextChanged(object sender, EventArgs e){
if (!txtAdd.Text.StartsWith("-"))
{
txtAdd.Text = txtAdd.Text.Replace("-", "").Insert(0, "-");
txtAdd.Select(txtAdd.TextLength, 0);
}
}
private void txtAdd_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != '\b')
if (e.KeyChar < '0' || e.KeyChar > '9')
e.Handled = true;
}

اسماعیل ابراهیمی
جمعه 09 آبان 1393, 15:58 عصر
دوست عزیز از عبارات باقاعده به شکل زیر میتونی استاده کنی


Regex rg = new Regex(@"^-[1-9]\d*");


if (rg.IsMatch(Console.ReadLine()))
{
Console.WriteLine("Number is Negative");
}
else
{
Console.WriteLine("Number is incorrect !");
}


Console.ReadLine();

mreram
جمعه 09 آبان 1393, 22:31 عصر
تقریبا کد پدرام درسته ولی اینم جواب میده:

private void textBox1_TextChanged(object sender, EventArgs e) {


if (!textBox1.Text.StartsWith("-"))
textBox1.Text = "-";
}


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

danialafshari
شنبه 10 آبان 1393, 01:53 صبح
با سلام

چرا از maskedTextBox خود ویژوال استفاده نمی کنید؟
خاصیت Mask رو روی -00000 تنظیم کنید
و -0 رو هم هندل کنید چون -0 بدون علامته که در leave مشخص میشه

کد آقایpedram.11 (http://barnamenevis.org/member.php?252653-pedram-11) هم-0 هندل نمیشه
و کد آقای mreram (http://barnamenevis.org/member.php?303886-mreram) هم علاوه بر مشکل بالا ما بین اعداد میشه - تایپ کرد که هندل نشده

موفق باشید

mreram
شنبه 10 آبان 1393, 02:23 صبح
با سلام

چرا از maskedTextBox خود ویژوال استفاده نمی کنید؟
خاصیت Mask رو روی -00000 تنظیم کنید
و -0 رو هم هندل کنید چون -0 بدون علامته که در leave مشخص میشه

کد آقایpedram.11 (http://barnamenevis.org/member.php?252653-pedram-11) هم-0 هندل نمیشه
و کد آقای mreram (http://barnamenevis.org/member.php?303886-mreram) هم علاوه بر مشکل بالا ما بین اعداد میشه - تایپ کرد که هندل نشده

موفق باشید
چطوری میشه -0 رو هندل کرد؟؟آخه keychar فقط کاراکتر قبول میکنه

danialafshari
شنبه 10 آبان 1393, 19:11 عصر
چطوری میشه -0 رو هندل کرد؟؟آخه keychar فقط کاراکتر قبول میکنه

با سلام
همونطور که در بالا گفتم در ایونت Leave باید جلوگیری بشه چون تا وقتی که خارج نشه عدد نهایی مشخص نیست
می تونید با زدن -0 پیامی به کاربر نمایش داده و تکست رو خالی کنید
موفق باشید