PDA

View Full Version : سوال: نمایش مقادیر خاص عددی در label



esmael_g
سه شنبه 22 بهمن 1398, 21:42 عصر
سلام و درود یک سوال دارم فرض کنید در یک صفحه دارای یک تایمر و لیبل تایمر شروع به شمردن زمان می کنه لیبل هم به همون شکل شروه به شمارش می کنه فرضا تایمر بعد از یک دقیقه زمان و رسیدن به 60 عدد داخل لیبل به 100 می رسه
حالا سوالم اینه چجوری فیلتری برای این کار درست کنم به شکلی که لیبل از یک شروع نکنه و تا زمانی که عدد فوق به ثانیه 60 نرسیده لیبل صفر باشه وقتی به 60 رسید لیبل هم بشه 100
و به همین شیوه هر 60 ثانیه صد تا به لیبل اضافه بشه ( خلاصه لیبل رو جوری تنظیم کنم هر صد عدد یا هر 60 ثانیه یه بار عدد بروز بشه مثلا از 100 به 200 بره )

ممنون میشم اگه راهی بلدید کمک کنید

the king
سه شنبه 22 بهمن 1398, 21:46 عصر
سلام و درود یک سوال دارم فرض کنید در یک صفحه دارای یک تایمر و لیبل تایمر شروع به شمردن زمان می کنه لیبل هم به همون شکل شروه به شمارش می کنه فرضا تایمر بعد از یک دقیقه زمان و رسیدن به 60 عدد داخل لیبل به 100 می رسه
حالا سوالم اینه چجوری فیلتری برای این کار درست کنم به شکلی که لیبل از یک شروع نکنه و تا زمانی که عدد فوق به ثانیه 60 نرسیده لیبل صفر باشه وقتی به 60 رسید لیبل هم بشه 100
و به همین شیوه هر 60 ثانیه صد تا به لیبل اضافه بشه ( خلاصه لیبل رو جوری تنظیم کنم هر صد عدد یا هر 60 ثانیه یه بار عدد بروز بشه مثلا از 100 به 200 بره )

ممنون میشم اگه راهی بلدید کمک کنید
عدد int شمارنده تایمر رو اول تقسیم بر 60 و بعد حاصل رو ضربدر 100 کنید، تقسیم int چون بدون اعشار انجام میشه همون در میاد که میخواهید.

esmael_g
سه شنبه 22 بهمن 1398, 22:04 عصر
عدد int شمارنده تایمر رو اول تقسیم بر 60 و بعد حاصل رو ضربدر 100 کنید، تقسیم int چون بدون اعشار انجام میشه همون در میاد که میخواهید.

خوب الان یه سوال با این کارمون رو جواب که تاثیر می زاره عدد int همون عددی که ما به تایمر دادیم رو اگه تقسیم بر 60کنیم و ضرب 100 که تنها میاد محاسبات رو تغییر میده نه اینکه بیاد و عددی که می خوایم رو چاپ کنه

TextBox textBox1 = (TextBox)Control1[0];
TextBox textBox = (TextBox)Control[0];
if (textBox.Text != "")
{
price = Convert.ToDouble(textBox.Text) / 3600;
num = Convert.ToDouble(textBox1.Text)/3600;

sum = price+ num;
if (StartTime == DateTime.MinValue)
{
StartTime = DateTime.Now;
}
var elapsed = DateTime.Now.Subtract(StartTime);
Timesystem1.Text = elapsed.Hours + ":" + elapsed.Minutes + ":" + elapsed.Seconds;

Pricesystem1.Text = Convert.ToString(Convert.ToInt32(sum * elapsed.TotalSeconds)) ;



اگه یادتون باشه اینو در سوال قبلیم کمکم کرده بودید حالا با این اوصاف من تو چند بخش از کد بالا این کار که گفتید رو انجام دادم اما نتیجه این بود که هر بار مقدار محاسباتی کم تر یا بیشتر میشد نه اینکه بیاد و فرضا تو لیبل بجایی اینکه از 1 تا 100 نشون بده مستقیم بپره رو صد بعد 60 ثانیه دوم که رفت بپره رو 200

راستی این اعداد هم ک همی گم مثاله وگرنه عدد رو کاربر خودش می زنه و اون تقسیم بر 3600 میشه که ثانیش بدست بیاد و بقیه ماجرا

و حالا اگر من فرضا شمارنده تایمر رو که تاریخ هست رو تقسیم کنم و ضرب خوب طبیعی رو نتیجه تاثیر می زاره
من نمی خوام نتیجه یا حرکت تایمر اصلا عوض بشه فقط می خوام تو لیبل اعداد رو به این صورت نشون بده 100 200 300 400 500 بجایی اینکه کلا اعداد بین 1-100 رو نشون بده اون تایم 60 ثانیه ای عدد لیبل متوقف بشه وقتی به ثانیه 60 رسید عدد لیبل 100 تا تکون بخوره

esmael_g
چهارشنبه 23 بهمن 1398, 11:40 صبح
حل شد اما روش حل همین شکلی که جناب the king گفتن
با یه ضرب تقسیم حل شد ( از دیروز که اینو گفتی هزار بار جملتون رو خوندم هر بار فکر می کردم چجوری این کارو رو انجام بدم ولی خلاصه اخرش نتیجه داشت )‌

Pricesystem1.Text = Convert.ToString(Convert.ToInt32(sum * elapsed.TotalSeconds)) ;


این کدی که من باهاش مبلغ رو می گرفتم و به لیبل می دادم رو باید بعد از totalsecound باید تقسیم بر 100 می کردم ولی نه اینکه بعدش بیام ضرب در 60 بکنم چون با این کار باعث میشد جواب نهایی اشتباه در بیاد فرض کنید هر دقیقه میشه 500 تمن ( فرضا ) وقتی بر 60 ضرب و تقسیم بر 100 می کردیم میشد حدودا 300 تمن اما راحت بر 100 تقسیم و بر صد ضرب کنیم حل میشه

خلاصه بازم با کمک the king عزیز این مشکل هم حل شد تشکر فراوان

ROSTAM2
چهارشنبه 23 بهمن 1398, 12:25 عصر
سلام. می تونید یک متغیر بسازید که مقدارش اگه به 60 رسید شمارش لیبل +100 بشه و مجددا متغیر صفر شه و دوبار مسیر رو در پی بگیره. البته که خود شماره لیبل هم بهتره که از یک متغیر گرفته بشه.

esmael_g
چهارشنبه 23 بهمن 1398, 13:07 عصر
سلام. می تونید یک متغیر بسازید که مقدارش اگه به 60 رسید شمارش لیبل +100 بشه و مجددا متغیر صفر شه و دوبار مسیر رو در پی بگیره. البته که خود شماره لیبل هم بهتره که از یک متغیر گرفته بشه.

سلام بله متوجه هستم ولی واقعیت نیازی به متغیر اضافه نیست تو برنامه تو خوب بخش لیبل خروجیش این کار شدنی هست اینکه بیام یه متغییر بسازم براش که عدد رو برام نگه داره خوب اضافه کاری میشه و مقداری کدم رو طولانی تر می کنه برای همین این روش ساده تره