سلام
میخوام یه عدد رو از تکست باکس بگیرم بعد تشخیص بده که عدد اعشاری هست یا صحیح؟
Printable View
سلام
میخوام یه عدد رو از تکست باکس بگیرم بعد تشخیص بده که عدد اعشاری هست یا صحیح؟
سلام ،
1 ) یک لیبل و یک دکمه و یک تکست باکس روی فرم قرار بده
2 ) کد زیر رو در رویداد Click دکمه بنویس :
try
{
int i = 0;
i = Convert.ToInt32(textBox1.Text);
label1.Text = "عدد صحیح";
}
catch
{
label1.Text = "اعشاری";
}
3 ) برنامه رو دیباگ کن و نتیجه رو مشاهده کن.
موفق باشید./
سلام
روش ذکر شده در بالا به دلیل استفاده از try-catch به نظر من روش مناسبی نیست و بهتر است از امکانات کتابخانه دات نت به صورت زیر استفاده نمایید:
public enum StringConversionResult:short
{
Nan = 0,
Integer=1,
Float=2
}
و سپس
public StringConversionResult ProcessString(string s)
{
var i = 0;
var d = 0d;
if (int.TryParse(s,out i))
{
return StringConversionResult.Integer;
}
return double.TryParse(s,out d) ? StringConversionResult.Float : StringConversionResult.Nan;
}
کد بالا در صورتی که کاربر فقط داخل تکست باکس عدد رو وارد کنه کاربرد داره ، نه اینکه هم بیاد حرف وارد کنهو هم Symbol . با if میتونه چک کنه.نقل قول:
و به ازای ورودی تکست باکس = "jkajkdfkjadfkb" ؟ :چشمک:
اشکالات رو بگین ممنون میشم.نقل قول:
روش ذکر شده در بالا به دلیل استفاده از try-catch به نظر من روش مناسبی نیست
سلام
در کد نویسی در دات نت توصیه می شود تا حد ممکن از try-catch استفاده نشود و از آن تنها در مواردی استفاده کرد که می خواهید بعد بروز خطا عملیاتی مانند Rollback کردن یک Transaction و یا Log کردن خطا و یا نمایش پیغام خطا به کاربر را داشته باشید. دلیل این موضوع نحوه اجرای کد نوشته شده در این حالت توسط CLR است. try-catch نباید برای مواردی که میتوان کد را بدون استفاده از آن نوشت استفاده شود. لینک های زیر در این زمینه مفید هستند:
http://weblogs.asp.net/memi/archive/...13/131244.aspx
http://codebetter.com/karlseguin/201...use-try-catch/
استفاده از Try-Catch اصلا قابل قبول نيست.
if (((int)Convert.ToDouble(textBox1.Text)).ToString () != textBox1.Text) MessageBox.Show("Float");
سلام نحوه ی صحیح تشخیص نوع ورودی اینه :
if (txtbox.Text.GetType() == typeof(Int32))
{
///int
}
else
{
///float
}
تا زمانی که GetType() هست چرا از این روشای پر درد سر استفاده می کنید؟!
ببخشید که اسپم شد
سلام
در پاسخ به دوستانی که از این روش استفاده کرده اند باید توضیح بدهم که متد GetType یک متد از کلاس System.Object است و در نتیجه کلیه انواع داده ای این متد را دارا می باشند. با فراخوانی این متد به صورت txtbox.Text.GetType() ، خروجی متد در شرایطی که مقدار txtbox.Text برابر با Null نباشد همیشه typeof (System.String) است و در هنگامی که Null باشد کد شما با خطا روبرو خواهد شد و Exception خواهد داد.