سلام
میخوام یه عدد رو از تکست باکس بگیرم بعد تشخیص بده که عدد اعشاری هست یا صحیح؟
سلام
میخوام یه عدد رو از تکست باکس بگیرم بعد تشخیص بده که عدد اعشاری هست یا صحیح؟
سلام ،
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 خواهد داد.