PDA

View Full Version : وارد كردن عدد اعشاري در تكس باكس



IMANAZADI
جمعه 01 مرداد 1389, 23:43 عصر
با سلام خدمت دوستان عزيز
من مدتي است از بيسيك به سي شارب رو آوردم
ولي الان يه سري مشكل دارم
ميخواستم ببينم جطوري ميتونم تكس باكسي درست كنم كه فقط اعداد اعشاري رو بكيره و نشه حروف وارد كرد
من قبلا تو text change‏ بيسيك اين كار رو كردم ولي تو سي شارب نتونستم
if not isnumrice (text1.text) then
messagebox.show ("error")
text1.focus()
text1.text="0"
sendkeys ("{home}+{end}")
endif
اين كد بيسيك بودميخواستم همجين كدي تو سي شارب بنويسم البته تو changeنه توkeypress
سوال ديكه معادل كدهاي left ‎,right,midدر C#‎جيه

vandermond
شنبه 02 مرداد 1389, 03:04 صبح
سلام دوست عزيز

if (!double.TryParse(textBox1.Text))
{
MessageBox.Show("Error");
textBox1.Focus();
textBox1.Text = "0";

}

اين سايت هم ميتونه براتون مفيد باشه: http://www.developerfusion.com/tools/convert/vb-to-csharp/

ASKaffash
شنبه 02 مرداد 1389, 08:13 صبح
با سلام خدمت دوستان عزيز
من مدتي است از بيسيك به سي شارب رو آوردم
ولي الان يه سري مشكل دارم
ميخواستم ببينم جطوري ميتونم تكس باكسي درست كنم كه فقط اعداد اعشاري رو بكيره و نشه حروف وارد كرد
من قبلا تو text change‏ بيسيك اين كار رو كردم ولي تو سي شارب نتونستم
if not isnumrice (text1.text) then
messagebox.show ("error")
text1.focus()
text1.text="0"
sendkeys ("{home}+{end}")
endif
اين كد بيسيك بودميخواستم همجين كدي تو سي شارب بنويسم البته تو changeنه توkeypress
سوال ديكه معادل كدهاي left ‎,right,midدر C#‎‎جيه
سلام
چرا MaskedTextBox استفاده نمی کنید ؟
- متد Substring معادل Mid و برای جانشینی Replace
- متد Left همان Left است
- متدRight نداریم که می توانید از همان Substring استفاده کنید

ACorvinus
شنبه 02 مرداد 1389, 10:37 صبح
سلام.

در رویداد KeyPress اینو بنویسی حل میشه.

if (e.KeyChar == '\b') return;
if (!(char.IsNumber(e.KeyChar)))
{
if (e.KeyChar == '.')
{
if (string.IsNullOrEmpty(textBox1.Text))
{
e.Handled = true; return;
}
else { if (textBox1.Text.Contains('.') == false) return; }
}
e.Handled = true;
}

موفق باشی.

ACorvinus
شنبه 02 مرداد 1389, 11:26 صبح
البته تو changeنه توkeypress

روش اشتباهی هستش که بخواین در رویداد TextChanged این کارو بکنین. بازم هرطور خودتون راحتین.

محسن شامحمدی
شنبه 02 مرداد 1389, 11:59 صبح
چرا چرخ رو دوباره اختراع می کنید.
شی masked textbox مخصوص اینطور کارها ساخته شده.
خیلی هم کار باهاش سادست

mmd2009
شنبه 02 مرداد 1389, 12:57 عصر
با سلام.

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

sayan
شنبه 02 مرداد 1389, 13:13 عصر
سلام دوستان
منم با masked textbox آشنا نیستم اگه کسی میتونه یه مثال بزنه مثلاً چیزی مثل دریافت Ip
با تشکر

ASKaffash
شنبه 02 مرداد 1389, 13:27 عصر
سلام
Mask را 999-999-999-999 قرار دهید

mmd2009
شنبه 02 مرداد 1389, 13:32 عصر
با سلام

بیا دوست عزیز اینم یک مثال برای گرفتن IP و Age و Mobile


Click For Download (http://up.iranblog.com/Files1/406a83012be44ccf83c7.rar)

IMANAZADI
شنبه 02 مرداد 1389, 16:48 عصر
سلام دوست عزيز

if (!double.TryParse(textBox1.Text))
{
MessageBox.Show("Error");
textBox1.Focus();
textBox1.Text = "0";

}اين سايت هم ميتونه براتون مفيد باشه: http://www.developerfusion.com/tools/convert/vb-to-csharp/

باتشکر از شما دوست عزیز
باید بگم که راهنمایی خوبی بود ولی خطا میگیره
No overload for method 'TryParse' takes 1 arguments
نمیدونم مشکل از کجاست
اصلا این overload چیه
دهن ما رو آسفالت کرد خیلی باش برخورد کردم

vandermond
شنبه 02 مرداد 1389, 17:30 عصر
باتشکر از شما دوست عزیز
باید بگم که راهنمایی خوبی بود ولی خطا میگیره
No overload for method 'TryParse' takes 1 arguments
نمیدونم مشکل از کجاست
اصلا این overload چیه
دهن ما رو آسفالت کرد خیلی باش برخورد کردم
دوست عزيز
من عذر ميخام كه كدم ناقص بود(ساعت 3.5 نصف شب بود ديگه:لبخند:)
بله بايد يك double هم به صورت out بهش بدي كه اگه تبديل شد بريزه توي اون.
كد اصلاح شده رو ميزارم:

double num;
if (!double.TryParse(textBox1.Text,out num))
{
MessageBox.Show("Error");
textBox1.Focus();
textBox1.Text = "0";

}
البته من هم روش MaskedTextBox رو ترجيح ميدم ولي چون شما گفته بوديد براي تكست باكس، من اين رو نوشتم.

ويرايش: درباره overload هم يادم رفت بگم. براي متدهايي با يك نام ولي تعداد يا نوع پارامتر ورودي مختلف اصطلاح overload استفاده ميشه. اون كدي كه من زده بودم يك پارامتر رو ميفرستاد به TryDouble در حالي كه اين متد دوتا overload داره يكي 2 پارامتر ميگيره و يكي ديگه 4 تا. پس با دادن يك پارامتر به اون نميشه فراخانيش كرد. براي همين خطا ميگيره.

ACorvinus
شنبه 02 مرداد 1389, 17:47 عصر
با سلام خدمت همه کسانی که MaskedTextBox رو پیشنهاد کردن.

ایشون گفتن:
فقط اعداد اعشاري رو بكيره

میخواستم ببینم شما Mask رو چجوری تنظیم می کنین که من نوعی بتونم هر عدد اعشاری رو با تعداد ارقام دلخواه برای قسمت صحیح و اعشار وارد کنم؟!!!!!!!

IMANAZADI
یک شنبه 03 مرداد 1389, 09:32 صبح
با تشکر از راهنمایی مفیدت
نکته دوست عزیزمون هم جالب بود ماسک را برای دریافت اعداد اعشاری چطوری باید تنظیم کرد
و اینکه معادل right بیسیک در سی چی هست
باید از همون Substring استفاده کرد
ولی چه طوری ؟؟

mmd2009
یک شنبه 03 مرداد 1389, 10:01 صبح
با سلام.

من کاری ندارم که میشه به تعداد دلخواه عدد اعشاری گذاشت یا خیر ولی اون چیزی که شاید مشخصا دیده بشه اینه اصلا کاربرد Mask اینه که کنترل بکنه کار کاربر رو و درست اون چیزی رو بخواهیم که کابر میخواد وارد بکنه . و شما اگر میخواهید تعداد زیادی ارقام عدد اعشاری بذارید بهتره از تکس باک استفاده بکنید .