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; } } }
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5