How can I tick times from a database in timer (counts down remaining)?
I read time values from a database .
I organize the values in a table layout panel and I want the values to start ticking.


I tried this code, which works, but not exactly like I want:


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 
mahsan
{
 public 
partial class marehet : Form
 
{
 
DataAccess da = new DataAccess("db1");
 
DataTable dt = new DataTable(); 


 
TableLayoutPanel tlp1 = new TableLayoutPanel();

 
RowStyle row = new RowStyle();

 
DateTime remaining7; 
 
System.DateTime m_StopTime1 = default(System.DateTime);
 
System.DateTime m_StopTime = default(System.DateTime);
 
DateTime[] myStrings = new DateTime[0];
 
TimeSpan[] myStrings1 = new TimeSpan[0];
 
Label label777 = new Label();
 
Label label77 = new Label();
 
TimeSpan remaining1=new TimeSpan();
 
Timer timer3 = new Timer(); 

 public 
marehet()
 { 
 
InitializeComponent(); 
tlp1.Size = new Size(400,200);

 
tlp1.RightToLeft = RightToLeft.Yes;
 
tlp1.AutoScroll = true;
 
tlp1.CellBorderStyle = TableLayoutPanelCellBorderStyle.Inset; 
 
tlp1.Location = new System.Drawing.Point(400, 0);
 
tabPage5.Controls.Add(tlp1);
 
dt = da.Quary("select * from zman");



 
myStrings = new DateTime[dt.Rows.Count];
 
myStrings1 = new TimeSpan[dt.Rows.Count];
 for (
int i = 0; i < dt.Rows.Count; i++)
 {
 
 
string gt = TableAccess.GetCell(dt, i, 1);
 
gt = gt.Substring(0, 8);
 
TimeSpan duration = TimeSpan.Parse(gt);

 
myStrings1[i] = duration;


 }



 
timer1.Enabled = true;

 
dt = da.Quary("select * from zman");
 for (
int k=0; k< dt.Rows.Count;k++)
 {


 
m_StopTime = default(System.DateTime);

 
m_StopTime = DateTime.Now.Add(myStrings1[k]);

 
myStrings[k] = m_StopTime;


 }


 
dt = da.Quary("select * from zman");



 for (
int i = 0; i < dt.Rows.Count; i++)
 { 


 
timer3 = new Timer();
 
timer3.Enabled = true;
 
timer3.Interval = 1000;
 
timer3.Start();

 
timer3.Tick += new System.EventHandler((sender, e) => timer3_Tick(sender, e, i));

 }
 
public 
void timer3_Tick(object sender, EventArgs e, int li)
 {

          if (o == 0)
 {
 
remaining1 = new TimeSpan();
 }
       remaining1 = myStrings[li].Subtract(DateTime.Now);
 
 
remaining1 = new TimeSpan(remaining1.Hours, remaining1.Minutes, remaining1.Seconds);
         

 
if (o == 0)
 {
 
label77 = new Label(); 
 }
 
label77.Text = remaining1.ToString();
 
label77.AutoSize = true;
         

 
if (remaining1.TotalSeconds < 0)
 {
 
remaining1 = TimeSpan.Zero;
             

 
timer3.Enabled = false;
 }
 

 
if (o == 0)
 {


 
tlp1.Controls.Add(label77, 1, li);
 }
 
 
o++;
 
 }