سلـام، یه تکست باکس دارم که فقط اعداد صحیح می گیره، می خوام اعداد اعشاری هم بگیره
چکار کنم؟!
کد:
protected override void OnKeyPress(KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
base.OnKeyPress(e);
}
[/align]
کد:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar =='.'))
e.Handled = true;
}
ممنون
راه حل خوبی بود، تو کدپروجکت هم گذاشته بودم، کسی جواب درست و حسابی نداد.
فقط مشکلی که الان داره اینه که "." را چند بار می تونه بگیره، در صورتی که در اعداد اعشاری فقط یکبار "." باید باشد
کد:
int t=0;
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string s = e.KeyChar.ToString();
if (!(e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == '.' && t<1))
{
e.Handled = true;
}
if (e.KeyChar == '.') t++;
}
ققنوس جان، ممنون
واقعا گل کاشتی
سلـام
الان یه مشکلی که پیدا شده اینه که اگه متن درون تکس باکس رو پاک کنیم و دوباره بزنیم، دیگه علامت اعشار "." نمی گیره
به نظر شما راه حل چیه؟
با دستور indexofچک کن اگه "." وجود نداره Tرا دوباره صفر کن
if ((sender as TextBox).Text.IndexOf('.') < 0) { t = 0; }
به این صورت نوشتم ولی ارور می ده
sender not found
**************
جناب ققنوس
تو ای مدیر ارشد تو ای حضرت والا
ای خسرو خوبان نظری سویِ سوال ما کن
کد:
s=textBox1.Text ;
if (s.IndexOf('.') <1)
t = 0;
این تکس باکس بصورت یک کلاس یا کامپوننت نوشته شده، اسم تکس باکس مشخص نیست
کد:
public class aDecimal : TextBox
{
int t=0;
protected override void OnKeyPress(KeyPressEventArgs e)
{
string s = e.KeyChar.ToString();
if (!(e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == '.' && t < 1 || char.IsControl(e.KeyChar)))
{
e.Handled = true;
}
if (e.KeyChar == '.') t++;
//if ((sender as TextBox).Text.IndexOf('.') < 0) { t = 0; }
base.OnKeyPress(e);
}