Torna al Thread
private void CreateButton2(DateTime _inizio, DataTable tabella)
{
this.groupBox1.Controls.Clear();
TimeInterval timeIntCollection = new TimeInterval();
foreach (DataRow riga in tabella.Rows)
{
timeIntCollection.AddTimeInterval(Convert.ToDateTime(riga["inizio"]), Convert.ToDateTime(riga["inizio"]).AddMinutes(Convert.ToInt32(riga["durata"])));
}
try
{
Dictionary<DateTime, Button> btnTime = new Dictionary<DateTime, Button>();
DateTime startTime = new DateTime(_inizio.Year, _inizio.Month, _inizio.Day, 0, 0, 0);
Button bt;
while (startTime.Date == _inizio.Date)
{
bt = new Button();
bt.Text = String.Format("{0:00}", startTime.Hour) + "." + String.Format("{0:00}", startTime.Minute);
bt.Size = new Size(50, 50);
bt.Location = new System.Drawing.Point(15 + startTime.Hour * 50, 15 + startTime.Minute * 5);
bt.Tag = startTime;
//abilitazione bottone
//Il bottone è abilitato se l'orario del bottone NON è presente nella tabella
//Se vuoi fare il contrario, togli il !
bt.Enabled = !timeIntCollection.TimeIsIntoCollection(startTime);
btnTime.Add(startTime, bt);
this.groupBox1.Controls.Add(bt);
startTime = startTime.AddMinutes(15);
}
}
catch (Exception)
{
}
}
private class TimeInterval
{
List<TimeIntervalDefinition> _timingCollection = new List<TimeIntervalDefinition>();
public TimeInterval()
{
_timingCollection.Clear();
}
public void AddTimeInterval(DateTime start, DateTime end)
{
_timingCollection.Add(new TimeIntervalDefinition(start, end));
}
public bool TimeIsIntoCollection(DateTime timeToCheck)
{
bool res = false;
try
{
foreach (TimeIntervalDefinition tmd in _timingCollection)
{
if (timeToCheck >= tmd.Dtin && timeToCheck <= tmd.Dtfi)
{
res = true;
break;
}
}
}
catch (Exception)
{
}
return res;
}
private class TimeIntervalDefinition
{
DateTime dtin_ = DateTime.MinValue;
public DateTime Dtin
{
get { return dtin_; }
set { dtin_ = value; }
}
DateTime dtfi_ = DateTime.MinValue;
public DateTime Dtfi
{
get { return dtfi_; }
set { dtfi_ = value; }
}
public TimeIntervalDefinition()
{
}
public TimeIntervalDefinition(DateTime start, DateTime end)
{
dtin_ = start;
dtfi_ = end;
}
}
}