Parsi Coders

نسخه‌ی کامل: numeric textBox
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلـام، یه تکست باکس دارم که فقط اعداد صحیح می گیره، می خوام اعداد اعشاری هم بگیره

چکار کنم؟!
کد:
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++;

        }
ققنوس جان، ممنون
واقعا گل کاشتی
سلـام
الان یه مشکلی که پیدا شده اینه که اگه متن درون تکس باکس رو پاک کنیم و دوباره بزنیم، دیگه علامت اعشار "." نمی گیره
به نظر شما راه حل چیه؟
Sad
با دستور indexofچک کن اگه "." وجود نداره Tرا دوباره صفر کن
if ((sender as TextBox).Text.IndexOf('.') < 0) { t = 0; }
به این صورت نوشتم ولی ارور می ده

sender not found
**************

جناب ققنوس

تو ای مدیر ارشد تو ای حضرت والا
ای خسرو خوبان نظری سویِ سوال ما کن
SadSadSad

کد:
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);
}