public static DayOfWeek GetDayOfWeek(CalendarDayOfWeek calDayOfWeek) { switch (calDayOfWeek) { case CalendarDayOfWeek.Sunday: return(DayOfWeek.Sunday); case CalendarDayOfWeek.Monday: return(DayOfWeek.Monday); case CalendarDayOfWeek.Tuesday: return(DayOfWeek.Tuesday); case CalendarDayOfWeek.Wednesday: return(DayOfWeek.Wednesday); case CalendarDayOfWeek.Thursday: return(DayOfWeek.Thursday); case CalendarDayOfWeek.Friday: return(DayOfWeek.Friday); case CalendarDayOfWeek.Saturday: return(DayOfWeek.Saturday); default: return(DayOfWeek.Sunday); } }
/// <summary> /// Return true if date is weekend /// </summary> /// <param name="now"></param> /// <param name="workWeek">work week</param> /// <returns></returns> public static bool IsWeekend(DateTime now, CalendarDayOfWeek workWeek) { if ((Helper.GetCalDayOfWeek(now.DayOfWeek) & workWeek) == 0) { return(true); } else { return(false); } }
/// <summary> /// Increments Date /// </summary> /// <param name="span"></param> /// <param name="now"></param> /// <returns></returns> public static DateTime IncrementDate(TimescaleTopSpan span, DateTime now, CalendarDayOfWeek firstDayOfWeek) { switch (span) { case TimescaleTopSpan.Week: return(now.AddDays(7).AddDays(-(LocalizedDayOfWeek(now.AddDays(7).DayOfWeek, firstDayOfWeek)))); case TimescaleTopSpan.Month: return(now.AddMonths(1).AddDays(-now.AddMonths(1).Day + 1)); } return(now); }
/* * /// <summary> * /// Returns localized week number * /// </summary> * /// <param name="dayOfWeek"></param> * /// <returns></returns> * internal static int LocalizedDayOfWeek(System.DayOfWeek dayOfWeek) * { * // Old way with auto detect based on localization * int day = dayOfWeek.GetHashCode() - System.Globalization.DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek.GetHashCode(); * // New settings based on setting selected for control * // int day = dayOfWeek.GetHashCode() - System.Globalization.DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek.GetHashCode(); * * if(day<0) * day+=7; * * return day; * } */ /// <summary> /// Returns localized week number /// </summary> /// <param name="dayOfWeek"></param> /// <returns></returns> public static int LocalizedDayOfWeek(System.DayOfWeek dayOfWeek, CalendarDayOfWeek firstDayOfWeek) { // New settings based on setting selected for control int day = dayOfWeek.GetHashCode() - GetDayOfWeek(firstDayOfWeek).GetHashCode(); if (day < 0) { day += 7; } return(day); }
/// <summary> /// Gets from the specified <see cref="CalendarDayOfWeek"/> a generic list /// with the work days. /// </summary> /// <param name="nonWorkDays">The non working days.</param> /// <returns>A list with the working days.</returns> public static List <DayOfWeek> GetWorkDays(CalendarDayOfWeek nonWorkDays) { List <DayOfWeek> workDays = new List <DayOfWeek>(); for (int i = 0; i < 7; i++) { workDays.Add((DayOfWeek)i); } GetSysDaysOfWeek(nonWorkDays).ForEach(day => { if (workDays.Contains(day)) { workDays.Remove(day); } }); return(workDays); }
/// <summary> /// Gets a generic list of <see cref="DayOfWeek"/> value from the /// specified <see cref="CalendarDayOfWeek"/> value. /// </summary> /// <param name="days">The <see cref="CalendarDayOfWeek"/> value.</param> /// <returns>A generic list of type <see cref="DayOfWeek"/>.</returns> private static List <DayOfWeek> GetSysDaysOfWeek(CalendarDayOfWeek days) { List <DayOfWeek> list = new List <DayOfWeek>(); if ((days & CalendarDayOfWeek.Monday) == CalendarDayOfWeek.Monday) { list.Add(DayOfWeek.Monday); } if ((days & CalendarDayOfWeek.Tuesday) == CalendarDayOfWeek.Tuesday) { list.Add(DayOfWeek.Tuesday); } if ((days & CalendarDayOfWeek.Wednesday) == CalendarDayOfWeek.Wednesday) { list.Add(DayOfWeek.Wednesday); } if ((days & CalendarDayOfWeek.Thursday) == CalendarDayOfWeek.Thursday) { list.Add(DayOfWeek.Thursday); } if ((days & CalendarDayOfWeek.Friday) == CalendarDayOfWeek.Friday) { list.Add(DayOfWeek.Friday); } if ((days & CalendarDayOfWeek.Saturday) == CalendarDayOfWeek.Saturday) { list.Add(DayOfWeek.Saturday); } if ((days & CalendarDayOfWeek.Sunday) == CalendarDayOfWeek.Sunday) { list.Add(DayOfWeek.Sunday); } return(list); }
/// <summary> /// Gets a generic list of <see cref="DayOfWeek"/> value from the /// specified <see cref="CalendarDayOfWeek"/> value. /// </summary> /// <param name="days">The <see cref="CalendarDayOfWeek"/> value.</param> /// <returns>A generic list of type <see cref="DayOfWeek"/>.</returns> private static List<DayOfWeek> GetSysDaysOfWeek(CalendarDayOfWeek days) { List<DayOfWeek> list = new List<DayOfWeek>(); if ((days & CalendarDayOfWeek.Monday) == CalendarDayOfWeek.Monday) { list.Add(DayOfWeek.Monday); } if ((days & CalendarDayOfWeek.Tuesday) == CalendarDayOfWeek.Tuesday) { list.Add(DayOfWeek.Tuesday); } if ((days & CalendarDayOfWeek.Wednesday) == CalendarDayOfWeek.Wednesday) { list.Add(DayOfWeek.Wednesday); } if ((days & CalendarDayOfWeek.Thursday) == CalendarDayOfWeek.Thursday) { list.Add(DayOfWeek.Thursday); } if ((days & CalendarDayOfWeek.Friday) == CalendarDayOfWeek.Friday) { list.Add(DayOfWeek.Friday); } if ((days & CalendarDayOfWeek.Saturday) == CalendarDayOfWeek.Saturday) { list.Add(DayOfWeek.Saturday); } if ((days & CalendarDayOfWeek.Sunday) == CalendarDayOfWeek.Sunday) { list.Add(DayOfWeek.Sunday); } return list; }
/// <summary> /// Gets from the specified <see cref="CalendarDayOfWeek"/> a generic list /// with the work days. /// </summary> /// <param name="nonWorkDays">The non working days.</param> /// <returns>A list with the working days.</returns> public static List<DayOfWeek> GetWorkDays(CalendarDayOfWeek nonWorkDays) { List<DayOfWeek> workDays = new List<DayOfWeek>(); for (int i = 0; i < 7; i++) { workDays.Add((DayOfWeek)i); } GetSysDaysOfWeek(nonWorkDays).ForEach(day => { if (workDays.Contains(day)) { workDays.Remove(day); } }); return workDays; }
/// <summary> /// Initializes a new instance of the <see cref="MonthCalendar"/> class. /// </summary> public MonthCalendar() { SetStyle( ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.Selectable | ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.SupportsTransparentBackColor, true); // initialize menus this.InitializeComponent(); this.extendSelection = false; this.showFooter = true; this.showWeekHeader = true; this.mouseLocation = Point.Empty; this.yearSelected = DateTime.MinValue; this.monthSelected = DateTime.MinValue; this.selectionStart = DateTime.Today; this.selectionEnd = DateTime.Today; this.currentHitType = MonthCalendarHitType.None; this.boldedDates = new List<DateTime>(); this.boldDatesCollection = new BoldedDatesCollection(); this.boldDateCategoryCollection = new BoldedDateCategoryCollection(this); this.currentMoveBounds = Rectangle.Empty; this.mouseMoveFlags = new MonthCalendarMouseMoveFlags(); this.selectionRanges = new List<SelectionRange>(); this.daySelectionMode = MonthCalendarSelectionMode.Manual; this.nonWorkDays = CalendarDayOfWeek.Saturday | CalendarDayOfWeek.Sunday; this.culture = CultureInfo.CurrentUICulture; this.cultureCalendar = CultureInfo.CurrentUICulture.DateTimeFormat.Calendar; this.eraRanges = GetEraRanges(this.cultureCalendar); this.minDate = this.cultureCalendar.MinSupportedDateTime.Date < new DateTime(1900, 1, 1) ? new DateTime(1900, 1, 1) : this.cultureCalendar.MinSupportedDateTime.Date; this.maxDate = this.cultureCalendar.MaxSupportedDateTime.Date > new DateTime(9998, 12, 31) ? new DateTime(9998, 12, 31) : this.cultureCalendar.MaxSupportedDateTime.Date; this.formatProvider = new MonthCalendarFormatProvider(this.culture, null, this.culture.TextInfo.IsRightToLeft) { MonthCalendar = this }; this.renderer = new MonthCalendarRenderer(this); this.calendarDimensions = new Size(1, 1); this.headerFont = new Font("Segoe UI", 9f, FontStyle.Regular); this.footerFont = new Font("Arial", 9f, FontStyle.Bold); this.dayHeaderFont = new Font("Segoe UI", 8f, FontStyle.Regular); this.dayTextAlign = ContentAlignment.MiddleCenter; // update year menu this.UpdateYearMenu(DateTime.Today.Year); // set start date this.SetStartDate(new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1)); this.CalculateSize(true); }
/// <summary> /// Initializes a new instance of a Calendar. /// </summary> public Calendar() : base() { #if (DEMO) IsDemoVersion = true; #endif // only check license in design time // we don't use runtime license check to make control easier to deploy //if(LicenseManager.CurrentContext.UsageMode == LicenseUsageMode.Designtime) // license = LicenseManager.Validate(typeof(Calendar), this); _MaxDisplayedItems = 6; //_ShowTime = true; _AbbreviatedDayNames = true; _ViewType = CalendarViewType.MonthView; _SelectedDate = DateTime.Now.Date; _HighlightedDate = DateTime.Now.Date; _Items = new CalendarItemCollection(this); //_holidays = new HolidayCollection(this); _CalendarItemDefaultStyle = new CssTableItemStyle(); _CalendarItemHoverStyle = new CssTableItemStyle(); _CalendarItemSelectedStyle = new CssTableItemStyle(); _CalendarItemInactiveStyle = new CssTableItemStyle(); _CalendarItemHolidayStyle = new CssTableItemStyle(); //_CalendarDefaultStyle = new TableStyle(); _CalendarHeaderStyle = new CssTableItemStyle(); _WorkWeek = CalendarDayOfWeek.Monday | CalendarDayOfWeek.Tuesday | CalendarDayOfWeek.Wednesday | CalendarDayOfWeek.Thursday | CalendarDayOfWeek.Friday; _FirstDayOfWeek = CalendarDayOfWeek.Sunday; _Dates = new DateCollection(this); }
/* /// <summary> /// Returns localized week number /// </summary> /// <param name="dayOfWeek"></param> /// <returns></returns> internal static int LocalizedDayOfWeek(System.DayOfWeek dayOfWeek) { // Old way with auto detect based on localization int day = dayOfWeek.GetHashCode() - System.Globalization.DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek.GetHashCode(); // New settings based on setting selected for control // int day = dayOfWeek.GetHashCode() - System.Globalization.DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek.GetHashCode(); if(day<0) day+=7; return day; } */ /// <summary> /// Returns localized week number /// </summary> /// <param name="dayOfWeek"></param> /// <returns></returns> public static int LocalizedDayOfWeek(System.DayOfWeek dayOfWeek, CalendarDayOfWeek firstDayOfWeek) { // New settings based on setting selected for control int day = dayOfWeek.GetHashCode() - GetDayOfWeek(firstDayOfWeek).GetHashCode(); if(day<0) day+=7; return day; }
/// <summary> /// Return true if date is weekend /// </summary> /// <param name="now"></param> /// <param name="workWeek">work week</param> /// <returns></returns> public static bool IsWeekend(DateTime now, CalendarDayOfWeek workWeek) { if((Helper.GetCalDayOfWeek(now.DayOfWeek) & workWeek)==0) return true; else return false; }
/// <summary> /// Increments Date /// </summary> /// <param name="span"></param> /// <param name="now"></param> /// <returns></returns> public static DateTime IncrementDate(TimescaleTopSpan span, DateTime now, CalendarDayOfWeek firstDayOfWeek) { switch(span) { case TimescaleTopSpan.Week: return now.AddDays(7).AddDays(-(LocalizedDayOfWeek(now.AddDays(7).DayOfWeek, firstDayOfWeek))); case TimescaleTopSpan.Month: return now.AddMonths(1).AddDays(-now.AddMonths(1).Day+1); } return now; }
public static DateTime GetMonthStartDate(DateTime now, DateTime MonthStartDate, CalendarDayOfWeek firstDayOfWeek) { DateTime monthStart = DateTime.MinValue; if(MonthStartDate>DateTime.MinValue) monthStart = MonthStartDate; else monthStart = new DateTime(now.Year, now.Month, 1); return monthStart.AddDays(-LocalizedDayOfWeek(monthStart.DayOfWeek, firstDayOfWeek)); }
public static DayOfWeek GetDayOfWeek(CalendarDayOfWeek calDayOfWeek) { switch(calDayOfWeek) { case CalendarDayOfWeek.Sunday: return DayOfWeek.Sunday; case CalendarDayOfWeek.Monday: return DayOfWeek.Monday; case CalendarDayOfWeek.Tuesday: return DayOfWeek.Tuesday; case CalendarDayOfWeek.Wednesday: return DayOfWeek.Wednesday; case CalendarDayOfWeek.Thursday: return DayOfWeek.Thursday; case CalendarDayOfWeek.Friday: return DayOfWeek.Friday; case CalendarDayOfWeek.Saturday: return DayOfWeek.Saturday; default: return DayOfWeek.Sunday; } }
public static DateTime GetMonthStartDate(DateTime now, DateTime MonthStartDate, CalendarDayOfWeek firstDayOfWeek) { DateTime monthStart = DateTime.MinValue; if (MonthStartDate > DateTime.MinValue) { monthStart = MonthStartDate; } else { monthStart = new DateTime(now.Year, now.Month, 1); } return(monthStart.AddDays(-LocalizedDayOfWeek(monthStart.DayOfWeek, firstDayOfWeek))); }