This repository has been archived by the owner on Sep 11, 2023. It is now read-only.
/
Form1.cs
84 lines (74 loc) · 3.47 KB
/
Form1.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
#region #usings
using DevExpress.XtraScheduler;
using DevExpress.XtraScheduler.Drawing;
using System.Drawing.Drawing2D;
#endregion #usings
namespace CustomDrawDayHeader {
public partial class Form1 : Form {
const string aptDataFileName = @"..\..\Data\appointments.xml";
const string resDataFileName = @"..\..\Data\resources.xml";
public Form1() {
InitializeComponent();
schedulerControl1.Start = new DateTime(2008, 7, 11);
FillData();
}
#region FillData
void FillData() {
AppointmentCustomFieldMapping customNameMapping = new AppointmentCustomFieldMapping("CustomName", "CustomName");
AppointmentCustomFieldMapping customStatusMapping = new AppointmentCustomFieldMapping("CustomStatus", "CustomStatus");
schedulerStorage1.Appointments.CustomFieldMappings.Add(customNameMapping);
schedulerStorage1.Appointments.CustomFieldMappings.Add(customStatusMapping);
FillResourcesStorage(schedulerStorage1.Resources.Items, resDataFileName);
FillAppointmentsStorage(schedulerStorage1.Appointments.Items, aptDataFileName);
}
static Stream GetFileStream(string fileName) {
return new StreamReader(fileName).BaseStream;
}
static void FillAppointmentsStorage(AppointmentCollection c, string fileName) {
using(Stream stream = GetFileStream(fileName)) {
c.ReadXml(stream);
stream.Close();
}
}
static void FillResourcesStorage(ResourceCollection c, string fileName) {
using(Stream stream = GetFileStream(fileName)) {
c.ReadXml(stream);
stream.Close();
}
}
#endregion
private void schedulerStorage_AppointmentsChanged(object sender, PersistentObjectsEventArgs e) {
schedulerStorage1.Appointments.Items.WriteXml(aptDataFileName);
}
private void cb_CustomDraw_CheckedChanged(object sender, EventArgs e) {
if(cb_CustomDraw.Checked)
schedulerControl1.CustomDrawDayHeader += schedulerControl1_CustomDrawDayHeader;
else
schedulerControl1.CustomDrawDayHeader -= schedulerControl1_CustomDrawDayHeader;
schedulerControl1.Refresh();
}
#region #customdrawdayheader
private void schedulerControl1_CustomDrawDayHeader(object sender, CustomDrawObjectEventArgs e) {
DayHeader header = e.ObjectInfo as DayHeader;
// Draws the outer rectangle.
using(var backBrush = new LinearGradientBrush(e.Bounds,
Color.LightBlue, Color.Blue, LinearGradientMode.Vertical))
e.Cache.FillRectangle(backBrush, e.Bounds);
Rectangle innerRect = Rectangle.Inflate(e.Bounds, -2, -2);
// Draws the inner rectangle.
using(var backBrush = new LinearGradientBrush(e.Bounds,
Color.Blue, Color.LightSkyBlue, LinearGradientMode.Vertical))
e.Cache.FillRectangle(backBrush, innerRect);
// Draws the header's caption.
e.Cache.DrawString(header.Caption, header.Appearance.HeaderCaption.Font,
Brushes.White, innerRect,
header.Appearance.HeaderCaption.GetStringFormat());
e.Handled = true;
}
#endregion #customdrawdayheader
}
}