با سلام :
چه کدی در رویداد keypress مربوط به textbox میشه نوشت که فقط و فقط عدد وارد بشه؟؟؟
با سلام :
چه کدی در رویداد keypress مربوط به textbox میشه نوشت که فقط و فقط عدد وارد بشه؟؟؟
سلام
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar < '0' || e.KeyChar > '9')
e.Handled = true;
}
یه چیز هم به جواب دوستم اضافه کنم من برای فقط فارس نوشتن از این حالت استفاده می کنم
خودت دقت کن دیگه هر تغییر ی می تونی
موفق باشی
private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
char ch;
ch = e.KeyChar;
if ((ch <= '0' && ch >= '9') || (ch > 'A' && ch < 'z'))
{
e.Handled = true;
}
}
این کدها اگه طرف عدد رو کاپی-پیست هم بکنه جواب میده؟
سلام
نه
ایشون یه کد واسه رویداد keypress می خاستن
چیزی که شما می خواین واسه رویداد TextChanged هستش
private void textBox1_TextChanged(object sender, EventArgs e)
{
int a = textBox1.SelectionStart;
try
{
// you can use advanced function to conver your string to numerical value
// but for this simple example i use Convert.ToDouble method
// is not work carefully, you define a function like val in VB
textBox1.Text = Convert.ToDouble(textBox1.Text).ToString();
textBox1.SelectionStart = a;
}catch{ // not a numerical value
textBox1.Text = "0";
}
}
پیشنهاد می کنم برای سبک تر شدن عملیات ها قبل از پیست مقدار بررسی اش کنید و از TextChanged استفاده نکنید
کد های قبلی درسته؛ اما اگه کاراکتری رو اشتباه وارد کنید، دیگه Backspace کار نمیکنه!
این کد به نظرم کامله :
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\b')
{
e.Handled = false;
return;
}
if (e.KeyChar < '0' || e.KeyChar > '9')
e.Handled = true;
}
در مورد Copy ، Paste میتونید کلیک راست و Ctrl+V رو در TextBox غیرفعال کنید.
کامل نیست. اگه تونستی توش تایپ کنی12.49
حالا نمایش توان علمی اعداد هم بیخیال مثلا 1.23E+2
برای ایده گرفتن ، - یک ایده - ، کافی بود ماشین حساب ویندوز رو اجرا کنید! با کمی دقت متوجه میشید که محلی که در اون تایپ میکنید رو اصلا از تسکت باکس استفاده نکرده اند . بلکه از Label استفاده کرده اند . اولین خاصیتش هم اینکه فکرتون از بابت مشکل کپی-پیست راحت میشه. فقط هم کاپی -پیست نیست . context menu رو هم باید در نظر گرفت و امکان paste ئئ که در تکست باکس میده!
راه دوم هم این بود که وارد سایت گوگل شوید :
نتیجه:
http://www.codeproject.com/KB/edit/TNumEditBox.aspx
من قصدم توهین نیست. یه وقت ناراحت نشین
دوست عزیز شما لازمه یک بار دیگه سوال رو بخونیدبرای ایده گرفتن ، - یک ایده - ، کافی بود ماشین حساب ویندوز رو اجرا کنید! با کمی دقت متوجه میشید که محلی که در اون تایپ میکنید رو اصلا از تسکت باکس استفاده نکرده اند . بلکه از Label استفاده کرده اند . اولین خاصیتش هم اینکه فکرتون از بابت مشکل کپی-پیست راحت میشه. فقط هم کاپی -پیست نیست . context menu رو هم باید در نظر گرفت و امکان paste ئئ که در تکست باکس میده!
می دونید منظور از فقط و فقط چیه ؟؟؟؟چه کدی در رویداد keypress مربوط به textbox میشه نوشت که فقط و فقط عدد وارد بشه؟؟؟
بگین تا منم بدونم چه نیازی به این هستش تا واسه یک کد دو خطی یه لینک به یه صفحه دیگه بذارم
بعدش از اونجا که جواب تمام سوال ها تو گوگل هست بیاین دیگه در فروم ها رو ببندیم دیگه! چه کاریه! اونم تو سال (مثلا) اصلاح الگوی مصرف.
بعدش شما رو چه حسابی می گی ماشین حساب ویندوز اون بالاش لیبله نه تکس باکس
یه برنامه ریسورس ور دار خودت می بینی که واضع نوشته نوعش Edit هستش و هیچ ربطی هم به کپی و اینجور چیزهای پیش پا افتاده نداره.
بعدش اگه خوب به ماشین حساب ویندوز نگاه کنی می بینی هیچ وقت فوکوس روی کنترل ها قرار نمی گیره و همش رو خود فرم هستش. اونا هم (اکثراً) روی رویداد های فرم برنامه نوشته اند نه روی تکس باکس یا هر چیز دیگه ای. که باعث شده کنترل کلی برنامه راحت بشه.
کد بقول خودتون دو خطی که شما نوشته بودید:دوست عزیز شما لازمه یک بار دیگه سوال رو بخونید
نقل قول:
چه کدی در رویداد keypress مربوط به textbox میشه نوشت که فقط و فقط عدد وارد بشه؟؟؟
می دونید منظور از فقط و فقط چیه ؟؟؟؟
بگین تا منم بدونم چه نیازی به این هستش تا واسه یک کد دو خطی یه لینک به یه صفحه دیگه بذارم
بعدش از اونجا که جواب تمام سوال ها تو گوگل هست بیاین دیگه در فروم ها رو ببندیم دیگه! چه کاریه! اونم تو سال (مثلا) اصلاح الگوی مصرف.
1- BackSpace توش کار نمیکنه. یعنی کاربری که عددی رو اشتباه وارد کرد ، بدبخت میشه!مگر اینکه بره سراغ دکمه Delete .
2- اعداد اعشاری رو هم قبول نمیکنه . کد آقای جعفرزاده و کد آقای Programmer هم همینطور . توی هیچ کدوم نمیشه تایپ کرد 12.49 !
بنظر من کارکرد فروم این هست که یک سناریوهای خاصی که برای افراد پیش میاد و داخلش مشکل دارند یا یک کاری رو میخواهند انجام دهند که هیچ ایده ای در موردش ندارند و بنابراین حتی یک keyword هم ازش نمیدونه رو بیاد توی فروم مطرح کنه و نظرات دیگران رو جویا بشه . قبلا هم این موضوع رو در انجمن مدیران مطرح کرده بودم : جلوگیری کردن از تاپیک اسپم علمی! در بخشها!بعدش از اونجا که جواب تمام سوال ها تو گوگل هست بیاین دیگه در فروم ها رو ببندیم دیگه! چه کاریه! اونم تو سال (مثلا) اصلاح الگوی مصرف.
فایده نداره، اگر حرف درست و منطقی بگی بازهم اشخاصی هستند که گفتن اشکالات را به شخصی میگیرند، باید از اول قبول کنی که به هر سازی برقصی بازهم یکی ناراحت میشه (من برایه خودم قبول کردم).
هر چقدر گفتم که به جایه اینکه بگید توهین میکنم زیره قسمت توهین شخصی را خط بکشید (که من بفهمم به چی توهین گفته میشه) و بفرستند، کسی هیچ وقت هیچ چی نفرستاد (ولی بازهم در مورد اینکه به شخص اشکال گرفته میشد و نه به روش باور داشتند).
باید قبول کرد هر کی هر چی بخواهد را میبینه، اگر کسی دنبال بهتر شدن است ، با گفته شدن اشکالات روشش را بهتر میکنه، و کسی که مشکلات شخصیتی دارد ، به هر حال مشکلات شخصیتی را میبینه.
اگر چه فارسی یک حالت حقارتی دارد، اگر یک چیز را در فارسی بگی بیشتر حالت اینکه داری توسر میزنی دارد ولی اگر به انگلیسی گفته شه حالت خبری و اطلاعاتی دارد.
همین "تو گوگل سرچ کن" را در نظر بگیر، در فارسی بهشان بر میخوره، در انگلیسی میشه "Do a google search" ، حالت اطلاعاتی دارد، یک چیزی یاد میگرند و تشکر هم میکنند.
فکر کنم من هم باید هر جوابم را با "این جواب توهین نیست" شروع کنم که مبادا از شنیدن حرف درست و منطقی به کسی بر بخورد..
دوستان، به جای ادامه این بحث و منحرف کردن تاپیک، کد کاملتر رو قرار بدید یا سوال خودتون رو مطرح کنید!
از اونجا که ایجادکنندۀ تاپیک ، حرف از نقطه اعشار یا نمایش توان علمی نزدند، کدی که قرار دادم، کامل هست! ولی برای نقطه اعشار میشه خط اول کد رو این جوری تغیر داد :
if (e.KeyChar == '\b' || e.KeyChar =='.')موفق باشید/
آخرین ویرایش به وسیله Pr0grammer : دوشنبه 11 آبان 1388 در 09:16 صبح
گفتم یک کد بنویسم که هم عدد اعشاری بگیره و هم عدد صحیح و بک اسپیس هم داشته باشد ، ضمنا فقط یک ممیز به کاربر اجازه میده وارد کنه یعنی اینجوری نمیزاره بشه 0.233.4 و ....
نتیجه این :
کد در رویداد KeyPress تکست باکس قرار بدهید
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
{
e.Handled = true;
}
// فقط اجازه ورود یک ممیز را میدهد
if (e.KeyChar == '.'
&& (sender as TextBox).Text.IndexOf('.') > -1)
{
e.Handled = true;
}