PDA

View Full Version : سوال: به کار گیری تایمر برای شمارش مخصوص



aminaltavista
سه شنبه 28 شهریور 1391, 21:59 عصر
سلام

تو این کد تایمر تکست سه لیبل رو میخونه و شمارش معکوس رو برمیگردونه! مشکلی که داره اینه که فقط تا زمانی کار درست میکنه که به دقیقه 1 نرسیده باشه و اگه رسید یک دقیقه میسوزه مثلا 0:1:0 وقتی به این زمان رسید به جای 0:0:60 میشه 0:0:0 خواهشمندم ترمیمش کنید و برام بزاریدش .

دمتون گرم

int index = Int32.Parse(lblSecond.Text);
int minute = Int32.Parse(lblMinutes.Text);
int hour = Int32.Parse(lblHour.Text);

index--;
lblSecond.Text = index.ToString();
if (lblSecond.Text == "0" && lblMinutes.Text != "0")
{
lblSecond.Text = "60";
minute -= 1;
lblMinutes.Text = minute.ToString();
} if (lblMinutes.Text == "0" && lblSecond.Text == "0")
{
hour -= 1;
lblHour.Text = hour.ToString();
lblMinutes.Text = "60";
lblSecond.Text = "60";
}

if (lblHour.Text == "0")
{
hour = 0;
lblHour.Text = "0";
}
if (lblMinutes.Text == "1" && lblSecond.Text == "0" && lblHour.Text == "0")
{///****
minute -= 1;
lblMinutes.Text = minute.ToString();
}
if (lblHour.Text == "0" && lblMinutes.Text == "0" && lblSecond.Text != "0")
{
timer1.Stop();
lblSecond.Text = "0";
}

ya30ien2
چهارشنبه 29 شهریور 1391, 00:50 صبح
اینجوری حل میشه
int index = Int32.Parse(lblSecond.Text);
int minute = Int32.Parse(lblMinutes.Text);
int hour = Int32.Parse(lblHour.Text);
if (lblSecond.Text == "0" && lblMinutes.Text != "0")
{
minute--;
index = 60;
lblMinutes.Text = minute.ToString();
lblSecond.Text = index.ToString();
}
if (lblSecond.Text == "0" && lblMinutes.Text == "0" && lblHour.Text != "0")
{
hour--;
minute = 60;
index = 0;
lblMinutes.Text = minute.ToString();
lblSecond.Text = index.ToString();
lblHour.Text = hour.ToString();
}
if (lblSecond.Text != "0")
{
index--;
lblSecond.Text = index.ToString();
}

mousa1992
چهارشنبه 29 شهریور 1391, 01:00 صبح
سلام
فک کنم این چیزیه که میخواین
s1 , m1 , h 1 لیبل های ثانیه و دقیقه و ساعت هستند و i1 , i2 , i3 متغیر هایی برای ذخیره مقدار ثانیه و دقیقه و ساعت هستند


private void timer1_Tick(object sender, EventArgs e)
{
i1++;
s1.Text = i1.ToString("00");
if (i1 == 59)
i1 = -1;
if (i1 == 0)
{
i11++;
m1.Text = i11.ToString("00");
}
if (i11 == 59)
i11 = -1;
if (i11==0 && i1 == 0)
{
i111++;
h1.Text = i111.ToString("00");
}
}


موفق باشید

danialafshari
چهارشنبه 29 شهریور 1391, 01:18 صبح
فکر کنم این بدردتون بخوره

namespace Test
{
public partial class Form1 : Form
{
int h = 0, m = 0, s = 0;

public Form1()
{
InitializeComponent();
}

private void timer1_Tick(object sender, EventArgs e)
{
s = s + 1;
if (s == 60)
{
m = m + 1;
s = 0;
}
if (m == 60)
{
m = 0;
h = h + 1;
}
label1.Text = h.ToString("00") + ":" + m.ToString("00") + ":" + s.ToString("00");
}
}
}

aminaltavista
چهارشنبه 29 شهریور 1391, 08:32 صبح
سلام
فک کنم این چیزیه که میخواین
s1 , m1 , h 1 لیبل های ثانیه و دقیقه و ساعت هستند و i1 , i2 , i3 متغیر هایی برای ذخیره مقدار ثانیه و دقیقه و ساعت هستند


private void timer1_Tick(object sender, EventArgs e)
{
i1++;
s1.Text = i1.ToString("00");
if (i1 == 59)
i1 = -1;
if (i1 == 0)
{
i11++;
m1.Text = i11.ToString("00");
}
if (i11 == 59)
i11 = -1;
if (i11==0 && i1 == 0)
{
i111++;
h1.Text = i111.ToString("00");
}
}


موفق باشید

use of unassigned local variable این error ی هست که از متغیر هام میگیره. مقادیر اولیه i1 و i11 و i111 چی هستند؟

aminaltavista
چهارشنبه 29 شهریور 1391, 08:42 صبح
اینجوری حل میشه
int index = Int32.Parse(lblSecond.Text);
int minute = Int32.Parse(lblMinutes.Text);
int hour = Int32.Parse(lblHour.Text);
if (lblSecond.Text == "0" && lblMinutes.Text != "0")
{
minute--;
index = 60;
lblMinutes.Text = minute.ToString();
lblSecond.Text = index.ToString();
}
if (lblSecond.Text == "0" && lblMinutes.Text == "0" && lblHour.Text != "0")
{
hour--;
minute = 60;
index = 0;
lblMinutes.Text = minute.ToString();
lblSecond.Text = index.ToString();
lblHour.Text = hour.ToString();
}
if (lblSecond.Text != "0")
{
index--;
lblSecond.Text = index.ToString();
}

احسنت. بهتر و کوتاه تر بود . :تشویق:

موفق باشید.

انسان های مدرن متفاوت فکر میکنند. :متفکر: (امین ثریا)