سلام
به نظرتون این کد منطق ی هست؟
آخه اول ش امده اعتبار سنجی کرده ورودی که value هست بعد امده همان value رو داده به Label1 ..پس دیگه چرا اعتبار سنجی کردی؟
سلام
به نظرتون این کد منطق ی هست؟
آخه اول ش امده اعتبار سنجی کرده ورودی که value هست بعد امده همان value رو داده به Label1 ..پس دیگه چرا اعتبار سنجی کردی؟
سلام دوست عزیز.
اینجوری همیشه لیبیل عددی بین 0 تا 100 میگیره.
اره مشکلی نداره از لحاظ ساختاری
احتمالا کنترلی(ProgressBar) چیزی هست که با متد Invalidate رسم گرافیک صورت میگیره. درسته؟ لیبل هم فکر کنم درصد پیشرفت هست.
اعتبار سنجی برای این هست که مقدار باید بین صفر تا صد باشه. اگر غیر از این باشه مقدار value اصلاح میشه و بعد به لیبل اختصاص داده میشه.
else آخر نیاز نیست.
منظورم اینه که خط 8 باید بدون else باشه.
بهتره خطهای 8 و 9 و 10 به شرطی اجرا شوند که تغییری در مقدار رخ داده باشه
if (percent != value)
{
//percent = value;
//label1....
//Invalidate();
}
به نظر من منطقی نیست یه دلیلش را خود شما بهش اشاره کردی دومش داخل setter پراپرتی برای مقادیر کوچکتر از صفر و بزرگتر از صد مجدد setter فراخوانی میشود(Value=0) .وقتی قبل از انتساب بازه عدد چک میشود یعنی عددی خارج از بازه در فیلد پراپرتی ریخته نمی شود.پس فراخوانی متد Invalidate بی معنی هست.
protected float percent=0.0f;
public float Value
get{return percent;}
set{
percent=value<0?0:value>0?100:value;
label1.Text=percent.ToString();
}
First,solve the problem then write the code
اگرم بخواهیم در تابع Invalidate یه پیغامی به کاربر نشان داده شود و Invalidate حتما پیاده سازی شود بصورت زیر می توان پباده سازی کرد.
protected float percent=0.0f;
public float Value
get{return percent;}
set{
if(value<0)
{
percent=0;
Invalidate();
return;
}
if(value>100)
{
percent=100;
Invalidate();
return;
}
percent=value;
label1.Text=percent.ToString();
}
First,solve the problem then write the code