PDA

View Full Version : سوال: آیا ساختار این کد صحیح است؟



irpersian20
دوشنبه 04 بهمن 1395, 20:22 عصر
سلام
به نظرتون این کد منطق ی هست؟
آخه اول ش امده اعتبار سنجی کرده ورودی که value هست بعد امده همان value رو داده به Label1 ..پس دیگه چرا اعتبار سنجی کردی؟

reza_ali202000
دوشنبه 04 بهمن 1395, 22:50 عصر
سلام دوست عزیز.
اینجوری همیشه لیبیل عددی بین 0 تا 100 میگیره.
اره مشکلی نداره از لحاظ ساختاری

Mahmoud.Afrad
دوشنبه 04 بهمن 1395, 22:58 عصر
احتمالا کنترلی(ProgressBar) چیزی هست که با متد Invalidate رسم گرافیک صورت میگیره. درسته؟ لیبل هم فکر کنم درصد پیشرفت هست.
اعتبار سنجی برای این هست که مقدار باید بین صفر تا صد باشه. اگر غیر از این باشه مقدار value اصلاح میشه و بعد به لیبل اختصاص داده میشه.

else آخر نیاز نیست.

irpersian20
سه شنبه 05 بهمن 1395, 01:26 صبح
احتمالا کنترلی(ProgressBar) چیزی هست که با متد Invalidate رسم گرافیک صورت میگیره. درسته؟ لیبل هم فکر کنم درصد پیشرفت هست.
اعتبار سنجی برای این هست که مقدار باید بین صفر تا صد باشه. اگر غیر از این باشه مقدار value اصلاح میشه و بعد به لیبل اختصاص داده میشه.

else آخر نیاز نیست.

سلام
بله حدس شما درست بود، اما اگر else آخر را نزاریم که percent مقدار دهی نمیشود.

Mahmoud.Afrad
سه شنبه 05 بهمن 1395, 01:36 صبح
منظورم اینه که خط 8 باید بدون else باشه.
بهتره خطهای 8 و 9 و 10 به شرطی اجرا شوند که تغییری در مقدار رخ داده باشه
if (percent != value)
{
//percent = value;
//label1....
//Invalidate();
}

ژیار رحیمی
سه شنبه 05 بهمن 1395, 01:39 صبح
به نظر من منطقی نیست یه دلیلش را خود شما بهش اشاره کردی دومش داخل 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();
}

ژیار رحیمی
سه شنبه 05 بهمن 1395, 01:45 صبح
اگرم بخواهیم در تابع 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();
}