PDA

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



Arash-For-Life
یک شنبه 10 آبان 1388, 21:46 عصر
با سلام :
چه کدی در رویداد keypress مربوط به textbox میشه نوشت که فقط و فقط عدد وارد بشه؟؟؟

nasser_ray
یک شنبه 10 آبان 1388, 22:03 عصر
سلام


private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{

if (e.KeyChar < '0' || e.KeyChar > '9')
e.Handled = true;
}

behnamjafarzadeh
یک شنبه 10 آبان 1388, 22:13 عصر
با سلام :
چه کدی در رویداد keypress مربوط به textbox میشه نوشت که فقط و فقط عدد وارد بشه؟؟؟


یه چیز هم به جواب دوستم اضافه کنم من برای فقط فارس نوشتن از این حالت استفاده می کنم
خودت دقت کن دیگه هر تغییر ی می تونی
موفق باشی


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;
}
}

JaguarXF
یک شنبه 10 آبان 1388, 23:36 عصر
این کدها اگه طرف عدد رو کاپی-پیست هم بکنه جواب میده؟

nasser_ray
دوشنبه 11 آبان 1388, 00:32 صبح
سلام
نه
ایشون یه کد واسه رویداد 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 استفاده نکنید

Pr0grammer
دوشنبه 11 آبان 1388, 00:43 صبح
با سلام :
چه کدی در رویداد keypress مربوط به textbox میشه نوشت که فقط و فقط عدد وارد بشه؟؟؟

کد های قبلی درسته؛ اما اگه کاراکتری رو اشتباه وارد کنید، دیگه 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 غیرفعال کنید.

JaguarXF
دوشنبه 11 آبان 1388, 02:55 صبح
کد های قبلی درسته؛ اما اگه کاراکتری رو اشتباه وارد کنید، دیگه 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

nasser_ray
دوشنبه 11 آبان 1388, 03:39 صبح
من قصدم توهین نیست. یه وقت ناراحت نشین



برای ایده گرفتن ، - یک ایده - ، کافی بود ماشین حساب ویندوز رو اجرا کنید! با کمی دقت متوجه میشید که محلی که در اون تایپ میکنید رو اصلا از تسکت باکس استفاده نکرده اند . بلکه از Label استفاده کرده اند . اولین خاصیتش هم اینکه فکرتون از بابت مشکل کپی-پیست راحت میشه. فقط هم کاپی -پیست نیست . context menu رو هم باید در نظر گرفت و امکان paste ئئ که در تکست باکس میده!

دوست عزیز شما لازمه یک بار دیگه سوال رو بخونید


چه کدی در رویداد keypress مربوط به textbox میشه نوشت که فقط و فقط عدد وارد بشه؟؟؟

می دونید منظور از فقط و فقط چیه ؟؟؟؟
بگین تا منم بدونم چه نیازی به این هستش تا واسه یک کد دو خطی یه لینک به یه صفحه دیگه بذارم
بعدش از اونجا که جواب تمام سوال ها تو گوگل هست بیاین دیگه در فروم ها رو ببندیم دیگه! چه کاریه! اونم تو سال (مثلا) اصلاح الگوی مصرف.

بعدش شما رو چه حسابی می گی ماشین حساب ویندوز اون بالاش لیبله نه تکس باکس
یه برنامه ریسورس ور دار خودت می بینی که واضع نوشته نوعش Edit هستش و هیچ ربطی هم به کپی و اینجور چیزهای پیش پا افتاده نداره.
بعدش اگه خوب به ماشین حساب ویندوز نگاه کنی می بینی هیچ وقت فوکوس روی کنترل ها قرار نمی گیره و همش رو خود فرم هستش. اونا هم (اکثراً) روی رویداد های فرم برنامه نوشته اند نه روی تکس باکس یا هر چیز دیگه ای. که باعث شده کنترل کلی برنامه راحت بشه.

JaguarXF
دوشنبه 11 آبان 1388, 04:49 صبح
سلام


private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{

if (e.KeyChar < '0' || e.KeyChar > '9')
e.Handled = true;
}



دوست عزیز شما لازمه یک بار دیگه سوال رو بخونید
نقل قول:
چه کدی در رویداد keypress مربوط به textbox میشه نوشت که فقط و فقط عدد وارد بشه؟؟؟
می دونید منظور از فقط و فقط چیه ؟؟؟؟
بگین تا منم بدونم چه نیازی به این هستش تا واسه یک کد دو خطی یه لینک به یه صفحه دیگه بذارم
بعدش از اونجا که جواب تمام سوال ها تو گوگل هست بیاین دیگه در فروم ها رو ببندیم دیگه! چه کاریه! اونم تو سال (مثلا) اصلاح الگوی مصرف.

کد بقول خودتون دو خطی که شما نوشته بودید:
1- BackSpace توش کار نمیکنه. یعنی کاربری که عددی رو اشتباه وارد کرد ، بدبخت میشه! :عصبانی++:مگر اینکه بره سراغ دکمه Delete .
2- اعداد اعشاری رو هم قبول نمیکنه . کد آقای جعفرزاده و کد آقای Programmer هم همینطور . توی هیچ کدوم نمیشه تایپ کرد 12.49 !


بعدش از اونجا که جواب تمام سوال ها تو گوگل هست بیاین دیگه در فروم ها رو ببندیم دیگه! چه کاریه! اونم تو سال (مثلا) اصلاح الگوی مصرف.
بنظر من کارکرد فروم این هست که یک سناریوهای خاصی که برای افراد پیش میاد و داخلش مشکل دارند یا یک کاری رو میخواهند انجام دهند که هیچ ایده ای در موردش ندارند و بنابراین حتی یک keyword هم ازش نمیدونه رو بیاد توی فروم مطرح کنه و نظرات دیگران رو جویا بشه . قبلا هم این موضوع رو در انجمن مدیران مطرح کرده بودم : جلوگیری کردن از تاپیک اسپم علمی! در بخشها! (http://barnamenevis.org/forum/showthread.php?t=179524)

اَرژنگ
دوشنبه 11 آبان 1388, 05:29 صبح
من قصدم توهین نیست. یه وقت ناراحت نشین

...(یکسری حرفهایه درست و منطقی)

.
فایده نداره، اگر حرف درست و منطقی بگی بازهم اشخاصی هستند که گفتن اشکالات را به شخصی میگیرند، باید از اول قبول کنی که به هر سازی برقصی بازهم یکی ناراحت میشه (من برایه خودم قبول کردم).
هر چقدر گفتم که به جایه اینکه بگید توهین میکنم زیره قسمت توهین شخصی را خط بکشید (که من بفهمم به چی توهین گفته میشه) و بفرستند، کسی هیچ وقت هیچ چی نفرستاد (ولی بازهم در مورد اینکه به شخص اشکال گرفته میشد و نه به روش باور داشتند).
باید قبول کرد هر کی هر چی بخواهد را میبینه، اگر کسی دنبال بهتر شدن است ، با گفته شدن اشکالات روشش را بهتر میکنه، و کسی که مشکلات شخصیتی دارد ، به هر حال مشکلات شخصیتی را میبینه.
اگر چه فارسی یک حالت حقارتی دارد، اگر یک چیز را در فارسی بگی بیشتر حالت اینکه داری توسر میزنی دارد ولی اگر به انگلیسی گفته شه حالت خبری و اطلاعاتی دارد.
همین "تو گوگل سرچ کن" را در نظر بگیر، در فارسی بهشان بر میخوره، در انگلیسی میشه "Do a google search" ، حالت اطلاعاتی دارد، یک چیزی یاد میگرند و تشکر هم میکنند.
فکر کنم من هم باید هر جوابم را با "این جواب توهین نیست" شروع کنم که مبادا از شنیدن حرف درست و منطقی به کسی بر بخورد..

Pr0grammer
دوشنبه 11 آبان 1388, 09:05 صبح
دوستان، به جای ادامه این بحث و منحرف کردن تاپیک، کد کاملتر رو قرار بدید یا سوال خودتون رو مطرح کنید!

از اونجا که ایجادکنندۀ تاپیک ، حرف از نقطه اعشار یا نمایش توان علمی نزدند، کدی که قرار دادم، کامل هست! ولی برای نقطه اعشار میشه خط اول کد رو این جوری تغیر داد :

if (e.KeyChar == '\b' || e.KeyChar =='.')موفق باشید/

2okeee
پنج شنبه 06 بهمن 1390, 01:35 صبح
دوستان، به جای ادامه این بحث و منحرف کردن تاپیک، کد کاملتر رو قرار بدید یا سوال خودتون رو مطرح کنید!

از اونجا که ایجادکنندۀ تاپیک ، حرف از نقطه اعشار یا نمایش توان علمی نزدند، کدی که قرار دادم، کامل هست! ولی برای نقطه اعشار میشه خط اول کد رو این جوری تغیر داد :

if (e.KeyChar == '\b' || e.KeyChar =='.')موفق باشید/

کار نمیکند !!

2okeee
پنج شنبه 06 بهمن 1390, 01:47 صبح
گفتم یک کد بنویسم که هم عدد اعشاری بگیره و هم عدد صحیح و بک اسپیس هم داشته باشد ، ضمنا فقط یک ممیز به کاربر اجازه میده وارد کنه یعنی اینجوری نمیزاره بشه 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;
}

rezam44
چهارشنبه 05 تیر 1392, 14:24 عصر
سلام


private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{

if (e.KeyChar < '0' || e.KeyChar > '9')
e.Handled = true;
}



نشد
http://ww1.p.ht/up/754e06e46dfa.jpg