PDA

View Full Version : مبتدی: چگونه بعد از لود شدن فرم کنترل Timer بسازم.



sayan
پنج شنبه 05 مرداد 1391, 14:31 عصر
سلام دوستان گرامی.

وقتی فرم لود میشه تعداد عناصری از طریق کد به دست می آید مثلا 4 اند.

بعد از فرم لود شدن میخوام برای آن عناصر برای هر کدامشان کنترل Timer ایجاد کنم.این متد نوشتم



public void CreateTimer()
{
for (int i = 0; i < listView1.Items.Count; i++)
{


connTimer[i] = new Timer();
connTimer[i].Enabled = false;
connTimer[i].Interval = 1000;

connTimer[i].Tick += new EventHandler(Form1_Tick);
}
}




ولی وقتی به اولین خط این متد میرسه بعدش فرم نشون میده و به تعداد حلقه for کنترل timer نمیسازه.

متغییر connTimer یک list از نوع Timer هست.


تشکر از راهنمایی شما.

rezamansori
پنج شنبه 05 مرداد 1391, 15:56 عصر
اول باید ادد کنی بعدا مقدار دهی کنی.

این هم کد کامل :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<Timer> connTimer = new List<Timer>();
public void CreateTimer()
{
for (int i = 0; i < listView1.Items.Count; i++)
{
Timer t=new Timer();
t.Enabled = false;
t.Interval = 1000;
t.Tick += new EventHandler(t_Tick);
t.Tag = i;
t.Enabled = true;
connTimer.Add(t);
}
}

void t_Tick(object sender, EventArgs e)
{
Timer t = sender as Timer;
int i = int.Parse(listView1.Items[(int)(t.Tag)].Text)+1;
listView1.Items[(int)(t.Tag)].Text = i.ToString();
}


private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
listView1.Items.Add(i.ToString());
}
CreateTimer();
}

}
}

sayan
پنج شنبه 05 مرداد 1391, 17:04 عصر
درسته دوست عزیز یه اشتباه ساده کردم اصلاً توجه ای به متدد Add لیست نداشتم.
برنامه رو درست کردم ولی یه جایش قفل کردم دیگه:گیج:

میخواستم وقتی که یک آیتم از اون لیست کلیک میشه تایمر شروع کن به شمردن. خب اولی درست کار میکنه ولی وقتی شما آیتم های دیگه ای رو هم از اون listview انتخاب میکنی نمیدونم چیکار کنم که تایمر های قبلی همچنان بشمرن و این آیتم های جدید هم که کلیک میشه تایمر برای اونها هم درست کار کنه. ولی دیگه قفل کردم و هیچ راه حلی به ذهنم نرسید.:افسرده:

rezamansori
پنج شنبه 05 مرداد 1391, 17:31 عصر
کد زیر رو تو رویداد کلیک لیست بذار.

connTimer
[listView1.SelectedItems[0].Index].Enabled = true;

:چشمک: