diff --git a/GanttChart/GanttChart.bmp b/GanttChart/GanttChart.bmp
deleted file mode 100644
index 59b77fa..0000000
Binary files a/GanttChart/GanttChart.bmp and /dev/null differ
diff --git a/GanttChart/GanttChart.csproj b/GanttChart/GanttChart.csproj
deleted file mode 100644
index 7d3b358..0000000
--- a/GanttChart/GanttChart.csproj
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {DEA91CB9-1011-4EE7-B8E1-72428F731789}
- Library
- GanttChart
- GanttChart
- v4.7.2
- 512
- true
-
-
-
- AnyCPU
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
- false
-
-
- AnyCPU
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
-
-
-
-
-
-
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- True
- Resources.resx
- True
-
-
- SettingsSingleFileGenerator
- Settings.Designer.cs
-
-
- True
- Settings.settings
- True
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/GanttChart/GanttChartBrushes.cs b/GanttChart/GanttChartBrushes.cs
deleted file mode 100644
index ef2cceb..0000000
--- a/GanttChart/GanttChartBrushes.cs
+++ /dev/null
@@ -1,197 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 甘特图笔刷
- ///
- class GanttChartBrushes: IDisposable
- {
- GanttChartView View { get; set; }
- public GanttChartBrushes(GanttChartView view)
- {
- View = view;
- this.GridBrush = new SolidBrush(view.GridColor);
-
- this.ColumnDateTextBrush = new SolidBrush(view.ColumnDateTextColor);
- this.ColumnHourTextBrush = new SolidBrush(view.ColumnHourTextColor);
- this.HeaderBackBrush = new SolidBrush(view.HeaderBackColor);
-
- this.BackBrush = new SolidBrush(view.BackColor);
- this.ContentBackBrush = new SolidBrush(view.ContentBackColor);
-
- this.CurrentTimeLineBrush = new SolidBrush(view.CurrentTimeLineColor);
-
- this.ItemTextBrush = new SolidBrush(view.ItemTextColor);
- this.ItemBackBrush = new SolidBrush(view.ItemBackColor);
- this.ItemBorderBrush = new SolidBrush(view.ItemBorderColor);
- this.ItemStartFlagBrush = new SolidBrush(view.ItemStartFlagColor);
- this.ItemSubRangeBackBrush = new SolidBrush(view.ItemSubRangeBackColor);
- this.ItemSelectionTextBrush = new SolidBrush(view.ItemSelectionTextColor);
- this.ItemSelectionBackBrush = new SolidBrush(view.ItemSelectionBackColor);
- this.ItemSelectionBorderBrush = new SolidBrush(view.ItemSelectionBorderColor);
- this.ItemSelectionSubRangeBackBrush = new SolidBrush(view.ItemSelectionSubRangeBackColor);
- this.ItemWarnningTextBrush = new SolidBrush(view.ItemWarnningTextColor);
-
- this.RowHeaderTextBrush = new SolidBrush(view.RowHeaderTextColor);
- this.RowSelectionHeaderTextBrush = new SolidBrush(view.RowSelectionHeaderTextColor);
- this.RowSelectionBorderBrush = new SolidBrush(view.RowSelectionBorderColor);
- this.RowSelectionHeaderBackBrush = new SolidBrush(view.RowSelectionHeaderBackColor);
- this.RowSelectionContentBackBrush = new SolidBrush(view.RowSelectionContentBackColor);
-
- this.TooltipTextBrush = new SolidBrush(view.TooltipTextColor);
- this.TooltipBorderBrush = new SolidBrush(view.TooltipBorderColor);
- this.TooltipBackBrush = new SolidBrush(view.TooltipBackColor);
-
- this.TimeRangeSelecetionBackBrush = new SolidBrush(view.TimeRangeSelecetionBackColor);
- this.SelectionRectangleBackBrush = new SolidBrush(view.SelectionRectangleBackColor);
-
- this.GridPen = new Pen(this.GridBrush, 1);
- this.CurrentTimeLinePen = new Pen(this.CurrentTimeLineBrush, 1);
- this.ItemBorderPen = new Pen(this.ItemBorderBrush, 1);
- this.ItemBackPen = new Pen(this.ItemBackBrush, 1);
- this.ItemSelectionBorderPen = new Pen(this.ItemSelectionBorderBrush, 1);
- this.RowSelectionBorderPen = new Pen(this.RowSelectionBorderBrush, 1);
- this.TooltipBorderPen = new Pen(this.TooltipBorderBrush, 1);
- this.ItemStartFlagPen = new Pen(this.ItemStartFlagBrush, 2);
- this.ItemSubRangeBackPen = new Pen(this.ItemSubRangeBackBrush, 1);
- this.ItemSelectionSubRangeBackPen = new Pen(this.ItemSelectionSubRangeBackBrush, 1);
- }
- public SolidBrush GridBrush { get; set; }
-
- public SolidBrush ColumnDateTextBrush { get; set; }
- public SolidBrush ColumnHourTextBrush { get; set; }
- public SolidBrush HeaderBackBrush { get; set; }
-
- public SolidBrush BackBrush { get; set; }
- public SolidBrush ContentBackBrush { get; set; }
-
- public SolidBrush CurrentTimeLineBrush { get; set; }
-
- public SolidBrush ItemTextBrush { get; set; }
- public SolidBrush ItemBackBrush { get; set; }
- public SolidBrush ItemBorderBrush { get; set; }
- public SolidBrush ItemStartFlagBrush { get; set; }
- public SolidBrush ItemSubRangeBackBrush { get; set; }
- public SolidBrush ItemSelectionTextBrush { get; set; }
- public SolidBrush ItemSelectionBackBrush { get; set; }
- public SolidBrush ItemSelectionBorderBrush { get; set; }
- public SolidBrush ItemSelectionSubRangeBackBrush { get; set; }
- public SolidBrush ItemWarnningTextBrush { get; set; }
-
-
- public SolidBrush RowHeaderTextBrush { get; set; }
- public SolidBrush RowSelectionHeaderTextBrush { get; set; }
- public SolidBrush RowSelectionBorderBrush { get; set; }
- public SolidBrush RowSelectionHeaderBackBrush { get; set; }
- public SolidBrush RowSelectionContentBackBrush { get; set; }
-
- public SolidBrush TooltipTextBrush { get; set; }
- public SolidBrush TooltipBorderBrush { get; set; }
- public SolidBrush TooltipBackBrush { get; set; }
-
- public SolidBrush TimeRangeSelecetionBackBrush { get; set; }
- public SolidBrush SelectionRectangleBackBrush { get; set; }
-
- public Pen GridPen { get; }
- public Pen CurrentTimeLinePen { get; }
- public Pen ItemBorderPen { get; }
- public Pen ItemBackPen { get; }
- public Pen ItemSelectionBorderPen { get; }
- public Pen RowSelectionBorderPen { get; }
- public Pen TooltipBorderPen { get; }
- public Pen ItemStartFlagPen { get; }
- public Pen ItemSubRangeBackPen { get; }
- public Pen ItemSelectionSubRangeBackPen { get; }
-
- public void Refresh()
- {
- this.GridBrush.Color = View.GridColor;
-
- this.ColumnDateTextBrush.Color = View.ColumnDateTextColor;
- this.ColumnHourTextBrush.Color = View.ColumnHourTextColor;
- this.HeaderBackBrush.Color = View.HeaderBackColor;
-
- this.ContentBackBrush.Color = View.ContentBackColor;
-
- this.CurrentTimeLineBrush.Color = View.CurrentTimeLineColor;
-
- this.ItemTextBrush.Color = View.ItemTextColor;
- this.ItemBackBrush.Color = View.ItemBackColor;
- this.ItemBorderBrush.Color = View.ItemBorderColor;
- this.ItemStartFlagBrush.Color = View.ItemStartFlagColor;
- this.ItemSubRangeBackBrush.Color = View.ItemSubRangeBackColor;
- this.ItemSelectionTextBrush.Color = View.ItemSelectionTextColor;
- this.ItemSelectionBackBrush.Color = View.ItemSelectionBackColor;
- this.ItemSelectionBorderBrush.Color = View.ItemSelectionBorderColor;
- this.ItemSelectionSubRangeBackBrush.Color = View.ItemSelectionSubRangeBackColor;
- this.ItemWarnningTextBrush.Color = View.ItemWarnningTextColor;
-
- this.RowHeaderTextBrush.Color = View.RowHeaderTextColor;
- this.RowSelectionHeaderTextBrush.Color = View.RowSelectionHeaderTextColor;
- this.RowSelectionBorderBrush.Color = View.RowSelectionBorderColor;
- this.RowSelectionHeaderBackBrush.Color = View.RowSelectionHeaderBackColor;
- this.RowSelectionContentBackBrush.Color = View.RowSelectionContentBackColor;
-
- this.TooltipTextBrush.Color = View.TooltipTextColor;
- this.TooltipBorderBrush.Color = View.TooltipBorderColor;
- this.TooltipBackBrush.Color = View.TooltipBackColor;
-
- this.TimeRangeSelecetionBackBrush.Color = View.TimeRangeSelecetionBackColor;
- this.SelectionRectangleBackBrush.Color = View.SelectionRectangleBackColor;
- }
-
- public void Dispose()
- {
- this.GridPen.Dispose();
- this.CurrentTimeLinePen.Dispose();
- this.ItemBorderPen.Dispose();
- this.ItemBackPen.Dispose();
- this.ItemSelectionBorderPen.Dispose();
- this.RowSelectionBorderPen.Dispose();
- this.TooltipBorderPen.Dispose();
- this.ItemStartFlagPen.Dispose();
- this.ItemSubRangeBackPen.Dispose();
- this.ItemSelectionSubRangeBackPen.Dispose();
-
- this.BackBrush.Dispose();
- this.GridBrush.Dispose();
-
- this.ColumnDateTextBrush.Dispose();
- this.ColumnHourTextBrush.Dispose();
- this.HeaderBackBrush.Dispose();
-
- this.ContentBackBrush.Dispose();
-
- this.CurrentTimeLineBrush.Dispose();
-
- this.ItemTextBrush.Dispose();
- this.ItemBackBrush.Dispose();
- this.ItemBorderBrush.Dispose();
- this.ItemStartFlagBrush.Dispose();
- this.ItemSubRangeBackBrush.Dispose();
- this.ItemSelectionTextBrush.Dispose();
- this.ItemSelectionBackBrush.Dispose();
- this.ItemSelectionBorderBrush.Dispose();
- this.ItemSelectionSubRangeBackBrush.Dispose();
- this.ItemWarnningTextBrush.Dispose();
-
- this.RowHeaderTextBrush.Dispose();
- this.RowSelectionHeaderTextBrush.Dispose();
- this.RowSelectionBorderBrush.Dispose();
- this.RowSelectionHeaderBackBrush.Dispose();
- this.RowSelectionContentBackBrush.Dispose();
-
- this.TooltipTextBrush.Dispose();
- this.TooltipBorderBrush.Dispose();
- this.TooltipBackBrush.Dispose();
-
- this.TimeRangeSelecetionBackBrush.Dispose();
- this.SelectionRectangleBackBrush.Dispose();
- }
- }
-}
diff --git a/GanttChart/GanttChartCollection.cs b/GanttChart/GanttChartCollection.cs
deleted file mode 100644
index ea7c268..0000000
--- a/GanttChart/GanttChartCollection.cs
+++ /dev/null
@@ -1,71 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 甘特图像集合
- ///
- ///
- public class GanttChartCollection : ICollection
- {
- private List Items;
- internal bool IsChanged { get; set; }
- internal DateTime StartDate { get; set; }
- public GanttChartCollection()
- {
- Items = new List();
- }
- public GanttChartCollection(ICollection items):this()
- {
- Items.AddRange(items);
- IsChanged = true;
- }
- public int Count => Items.Count;
-
- bool ICollection.IsReadOnly => false;
-
- public void Add(T item)
- {
- Items.Add(item);
- IsChanged = true;
- }
-
- public void Clear()
- {
- Items.Clear();
- IsChanged = false;
- }
-
- public bool Contains(T item) => Items.Contains(item);
-
- public void CopyTo(T[] array, int arrayIndex) => Items.CopyTo(array, arrayIndex);
-
- public IEnumerator GetEnumerator() => Items.GetEnumerator();
-
- public bool Remove(T item)
- {
- if (Items.Remove(item))
- {
- IsChanged = true;
- return true;
- }
- return false;
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return Items.GetEnumerator();
- }
- public T this[int index]
- {
- get
- {
- return Items[index];
- }
- }
- }
-}
diff --git a/GanttChart/GanttChartItemClickEventArgs.cs b/GanttChart/GanttChartItemClickEventArgs.cs
deleted file mode 100644
index a9f219b..0000000
--- a/GanttChart/GanttChartItemClickEventArgs.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 甘特图项单击事件参数
- ///
- public class GanttChartItemClickEventArgs : EventArgs
- {
- ///
- /// 项
- ///
- public GanttChartViewItem Item { get; private set; }
- ///
- /// 初始化
- ///
- ///
- public GanttChartItemClickEventArgs(GanttChartViewItem item)
- {
- Item = item;
- }
- }
-}
diff --git a/GanttChart/GanttChartItemDoubleClickEventArgs.cs b/GanttChart/GanttChartItemDoubleClickEventArgs.cs
deleted file mode 100644
index 3400684..0000000
--- a/GanttChart/GanttChartItemDoubleClickEventArgs.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 甘特图项双击事件参数
- ///
- public class GanttChartItemDoubleClickEventArgs : EventArgs
- {
- ///
- /// 项
- ///
- public GanttChartViewItem Item { get; private set; }
- ///
- /// 初始化
- ///
- ///
- public GanttChartItemDoubleClickEventArgs(GanttChartViewItem item)
- {
- Item = item;
- }
- }
-}
diff --git a/GanttChart/GanttChartPropertyChangeEventArgs.cs b/GanttChart/GanttChartPropertyChangeEventArgs.cs
deleted file mode 100644
index 9bed63d..0000000
--- a/GanttChart/GanttChartPropertyChangeEventArgs.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 甘特图属性改变事件参数
- ///
- public class GanttChartPropertyChangeEventArgs : EventArgs
- {
- ///
- /// 初始化
- ///
- ///
- ///
- public GanttChartPropertyChangeEventArgs(string name, object value)
- {
- PropertyName = name;
- PropertyValue = value;
- }
- ///
- /// 属性名
- ///
- public string PropertyName { get; set; }
- ///
- /// 属性值
- ///
- public object PropertyValue { get; set; }
- }
-}
diff --git a/GanttChart/GanttChartRangeSelectedEventArgs.cs b/GanttChart/GanttChartRangeSelectedEventArgs.cs
deleted file mode 100644
index 9e1e715..0000000
--- a/GanttChart/GanttChartRangeSelectedEventArgs.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 甘特图范围选择事件参数
- ///
- public class GanttChartRangeSelectedEventArgs : EventArgs
- {
- ///
- /// 事件范围
- ///
- public TimeRange Range { get; private set; }
- ///
- /// 初始化
- ///
- ///
- public GanttChartRangeSelectedEventArgs(TimeRange range)
- {
- Range = range;
- }
- ///
- /// 初始化
- ///
- ///
- ///
- public GanttChartRangeSelectedEventArgs(DateTime startTime, DateTime endTime)
- {
- Range = new TimeRange { StartTime = startTime, EndTime = endTime };
- }
- }
-}
diff --git a/GanttChart/GanttChartRowSelectedEventArgs.cs b/GanttChart/GanttChartRowSelectedEventArgs.cs
deleted file mode 100644
index 628b441..0000000
--- a/GanttChart/GanttChartRowSelectedEventArgs.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 甘特图行选中事件参数
- ///
- public class GanttChartRowSelectedEventArgs : EventArgs
- {
- ///
- /// 行
- ///
- public GanttChartViewRow Row { get; private set; }
- ///
- /// 初始化
- ///
- ///
- public GanttChartRowSelectedEventArgs(GanttChartViewRow row)
- {
- Row = row;
- }
- }
-}
diff --git a/GanttChart/GanttChartView.Events.cs b/GanttChart/GanttChartView.Events.cs
deleted file mode 100644
index 2cc5bf3..0000000
--- a/GanttChart/GanttChartView.Events.cs
+++ /dev/null
@@ -1,410 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-
-namespace GanttChart
-{
- ///
- /// 甘特图控件
- /// 该部分类主要处理事件
- ///
- public partial class GanttChartView
- {
- private bool _IsShiftPress = false;
- private bool _IsCtrlPress = false;
- private bool _IsAltPress = false;
- private bool _IsMouseDown = false;
- private bool _IsAjustSize = false;
- private bool _IsDragItem = false;
- private bool _IsShowTooltip = false;
- private Point _DragStartLocation = Point.Empty;
- private Point _DragEndLocation = Point.Empty;
- private Point _ShowTooltipPoint = Point.Empty;
- private Rectangle _SelectionRange = Rectangle.Empty;
- private GanttChartViewItem _DragItem = null;
- private GanttChartViewItem _ShowTooltipItem = null;
- public event EventHandler PropertyChanged;
- public event EventHandler ItemClick;
- public event EventHandler ItemDoubleClick;
- public event EventHandler RowSelected;
- public event EventHandler RangeSelected;
-
- ///
- /// 初始化事件
- ///
- protected void InitEvent()
- {
- _VScrollBar.Scroll += new ScrollEventHandler(VScrollBar_Scroll);
- _HScrollBar.Scroll += new ScrollEventHandler(HScrollBar_Scroll);
- _ContentControl.Paint += OnContentControlPaint;
- _ContentControl.MouseDown += OnMouseDown;
- _ContentControl.MouseUp += OnMouseUp;
- _ContentControl.MouseMove += OnMouseMove;
- _ContentControl.MouseClick += OnMouseClick;
- _ContentControl.MouseDoubleClick += OnMouseDoubleClick;
- }
- ///
- /// 销毁事件
- ///
- protected void DisposeEvent()
- {
-
- }
- ///
- /// 键盘按下事件
- ///
- ///
- protected override void OnKeyDown(KeyEventArgs e)
- {
- _IsShiftPress = e.Shift;
- _IsCtrlPress = e.Control;
- _IsAltPress = e.Alt;
- base.OnKeyDown(e);
- }
- ///
- /// 键盘弹起事件
- ///
- ///
- protected override void OnKeyUp(KeyEventArgs e)
- {
- _IsShiftPress = e.Shift;
- _IsCtrlPress = e.Control;
- _IsAltPress = e.Alt;
- base.OnKeyUp(e);
- }
- ///
- /// 鼠标单击事件
- ///
- ///
- ///
- protected void OnMouseClick(object sender, MouseEventArgs e)
- {
- if (_DragStartLocation != Point.Empty && e.X != _DragStartLocation.X && _DragStartLocation.Y != e.Y)
- {
- return;
- }
- if (IsHoverRowHeader(e.Location) || IsHoverRow(e.Location))
- {
- _SelectionRow = GetRow(e.Location);
- Invalidate();
- RowSelected?.Invoke(this, new GanttChartRowSelectedEventArgs(_SelectionRow));
- }
- if (IsHoverItem(e.Location))
- {
- _SelectionItem = GetItem(e.Location);
- Invalidate();
- ItemClick?.Invoke(this, new GanttChartItemClickEventArgs(_SelectionItem));
- }
- }
- ///
- /// 鼠标双击事件
- ///
- ///
- ///
- protected void OnMouseDoubleClick(object sender, MouseEventArgs e)
- {
- if (IsHoverItem(e.Location))
- {
- _SelectionItem = GetItem(e.Location);
- Invalidate();
- if(ItemDoubleClick != null)
- {
- if (_IsShowTooltip)
- {
- _IsShowTooltip = false;
- _ShowTooltipItem = null;
- _ShowTooltipPoint = Point.Empty;
- }
- ItemDoubleClick(this, new GanttChartItemDoubleClickEventArgs(_SelectionItem));
- }
- }
- }
- ///
- /// 鼠标滚动事件
- ///
- ///
- protected override void OnMouseWheel(MouseEventArgs e)
- {
- if (_IsShowTooltip)
- {
- _IsShowTooltip = false;
- _ShowTooltipItem = null;
- _ShowTooltipPoint = Point.Empty;
- }
- //int i = e.Delta > 0 ? -1 : 1;
- var scrollbar = _IsShiftPress ? _HScrollBar : (ScrollBar)_VScrollBar;
- var h = scrollbar.Value - (int)(e.Delta * MouseWheelSensitivity);
- if (h > scrollbar.Maximum)
- {
- h = scrollbar.Maximum;
- }
- if (h < scrollbar.Minimum)
- {
- h = scrollbar.Minimum;
- }
- scrollbar.Value = h;
- Invalidate();
- base.OnMouseWheel(e);
- }
- ///
- /// 鼠标按下事件
- ///
- ///
- ///
- protected void OnMouseDown(object sender, MouseEventArgs e)
- {
- if (_SelectionRow != null || _SelectionItem != null || _DragItem != null)
- {
- _SelectionRow = null;
- _SelectionItem = null;
- _DragItem = null;
- Invalidate();
- }
- _IsMouseDown = e.Button == MouseButtons.Left && true;
- if (_IsMouseDown)
- {
- _SelectionRange = Rectangle.Empty;
- _SelectionTimeRange = null;
- _DragStartLocation = e.Location;
- if (IsHoverDateSplitLine(e.Location) && !IsHoverItem(e.Location))
- {
- _IsAjustSize = true;
- }
- else if (IsHoverItem(e.Location))
- {
- _IsDragItem = true;
- _DragItem = GetItem(e.Location);
- }
- }
- }
- ///
- /// 控件创建事件
- ///
- protected override void OnCreateControl()
- {
- this.Brushes = new GanttChartBrushes(this);
- _HScrollBar.Width = this.Width - VScrollWidth;
- _VScrollBar.Height = this.Height - HScrollHeight;
- AdjustScrollbar();
- base.OnCreateControl();
- }
- ///
- /// 控件大小变化事件
- ///
- ///
- protected override void OnSizeChanged(EventArgs e)
- {
- _HScrollBar.Width = this.Width - VScrollWidth;
- _VScrollBar.Height = this.Height - HScrollHeight;
- AdjustScrollbar();
- Invalidate();
- base.OnSizeChanged(e);
- }
- ///
- /// 控件绘制事件
- ///
- ///
- ///
- private void OnContentControlPaint(object sender, PaintEventArgs e)
- {
- int bottom = ColumnHeight + ItemHeight + RowSpacing * 2;
- if (Rows != null && Rows.Any())
- {
- var last = Rows.Last();
- bottom = last.Bottom;
- }
- DrawBack(e.Graphics, bottom);
- e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
- DrawHeader(e.Graphics, bottom);
- DrawColumnHeader(e.Graphics);
- DrawTimeLine(e.Graphics, bottom);
-
- DrawSelectingRectangle(e.Graphics);
-
- DrawSelectionRange(e.Graphics);
-
- DrawRows(e.Graphics, bottom);
-
- DrawItemTooltip(e.Graphics);
- }
- ///
- /// 鼠标弹起事件
- ///
- ///
- ///
- protected void OnMouseUp(object sender, MouseEventArgs e)
- {
- if (_IsMouseDown)
- {
- if (_IsAjustSize)
- {
- _IsAjustSize = false;
- var w = e.X - _DragStartLocation.X + DateWidth;
- if (w < MinDateWidth)
- {
- DateWidth = MinDateWidth;
- }
- else
- {
- DateWidth = (w / 48 + (w % 48 == 0 ? 0 : 1)) * 48;
- }
- if(Rows != null)
- {
- Rows.IsChanged = true;
- }
- AdjustScrollbar();
- Invalidate();
- }
- else if (_IsDragItem)
- {
- _IsDragItem = false;
- //TODO:触发Drag事件
- Invalidate();
- }
- else if(!_DragStartLocation.IsEmpty && e.X != _DragStartLocation.X && e.Y != _DragStartLocation.Y && _DragStartLocation.X > RowHeaderWidth && _DragStartLocation.Y > ColumnHeight)
- {
- _DragEndLocation = e.Location;
- var row = GetRow(_DragStartLocation);
- if (row != null)
- {
- var width = Math.Abs(_DragEndLocation.X - _DragStartLocation.X);
- if (_DragEndLocation.X < RowHeaderWidth)
- {
- width -= RowHeaderWidth - _DragEndLocation.X;
- }
- else if (_DragEndLocation.X > ((int)(EndDate.Date - StartDate.Date).TotalDays + 1) * DateWidth + RowHeaderWidth - _HScrollBar.Value)
- {
- width = ((int)(EndDate.Date - StartDate.Date).TotalDays + 1) * DateWidth + RowHeaderWidth - _HScrollBar.Value - _DragStartLocation.X;
- }
- var start = new Point(Math.Min(_DragStartLocation.X, Math.Max(_DragEndLocation.X, RowHeaderWidth)), row.Top + 1);
- _SelectionRange = new Rectangle(start, new Size(width, row.Bottom - row.Top - 2));
-
- Invalidate();
- var mw = DateWidth / 24f / 60f;
- var ts = StartDate.AddMinutes((int)((_DragStartLocation.X - RowHeaderWidth + _HScrollBar.Value) / mw));
- var te = StartDate.AddMinutes((int)((_DragEndLocation.X - RowHeaderWidth + _HScrollBar.Value) / mw));
- if (te < ts)
- {
- var tt = te;
- te = ts;
- ts = tt;
- }
- _SelectionTimeRange = new TimeRange { StartTime = ts, EndTime = te };
- RangeSelected?.Invoke(this, new GanttChartRangeSelectedEventArgs(ts, te));
- }
- }
- }
- _IsMouseDown = false;
- _DragStartLocation = Point.Empty;
- _DragEndLocation = Point.Empty;
- }
- ///
- /// 鼠标移动事件
- ///
- ///
- ///
- protected void OnMouseMove(object sender, MouseEventArgs e)
- {
- if (_IsMouseDown)
- {
- if (_IsShowTooltip)
- {
- _IsShowTooltip = false;
- _ShowTooltipItem = null;
- _ShowTooltipPoint = Point.Empty;
-
- Invalidate();
- }
- if (_IsDragItem)
- {
-
- }
- else if (_DragStartLocation.X > RowHeaderWidth && _DragStartLocation.Y > ColumnHeight)
- {
- //TODO: 画选择框
- _DragEndLocation = e.Location;
- Invalidate();
- }
- return;
- }
- else if (IsHoverDateSplitLine(e.Location) && !IsHoverItem(e.Location))
- {
- Cursor = Cursors.VSplit;
- }
- //else if (IsHoverRowHeader(e))
- //{
- // Cursor = DefaultCursor;
- //}
- else if (IsHoverItem(e.Location))
- {
- Cursor = Cursors.Hand;
- //TODO:显示Tooltip
- if (!_IsShowTooltip || GetItem(e.Location) != _ShowTooltipItem)
- {
- _IsShowTooltip = true;
- _ShowTooltipItem = GetItem(e.Location);
- _ShowTooltipPoint = ComputeTooltipLocation(e.Location);
-
- Invalidate();
- return;
- }
- else
- {
- return;
- }
- }
- else
- {
- Cursor = DefaultCursor;
- }
- if (_IsShowTooltip)
- {
- _IsShowTooltip = false;
- _ShowTooltipItem = null;
- _ShowTooltipPoint = Point.Empty;
-
- Invalidate();
- }
- }
-
-
- ///
- /// 横向滚动事件
- ///
- ///
- ///
- private void HScrollBar_Scroll(object sender, ScrollEventArgs e)
- {
- Invalidate();
- }
- ///
- /// 纵向滚动事件
- ///
- ///
- ///
- private void VScrollBar_Scroll(object sender, ScrollEventArgs e)
- {
- Invalidate();
- }
- ///
- /// 属性改变事件
- ///
- ///
- ///
- private void OnPropertyChanged(string name, object value)
- {
- this.Brushes?.Refresh();
- var args = new GanttChartPropertyChangeEventArgs(name, value);
- PropertyChanged?.Invoke(this, args);
- if(name == nameof(BlockType))
- {
- Rows.IsChanged = true;
- }
- AdjustScrollbar();
- Invalidate();
- }
- }
-}
diff --git a/GanttChart/GanttChartView.Logic.cs b/GanttChart/GanttChartView.Logic.cs
deleted file mode 100644
index edea944..0000000
--- a/GanttChart/GanttChartView.Logic.cs
+++ /dev/null
@@ -1,217 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-
-namespace GanttChart
-{
- ///
- /// 甘特图控件
- /// 该部分类处理甘特图逻辑
- ///
- public partial class GanttChartView
- {
- ///
- /// 鼠标是否经过日分割线
- ///
- ///
- ///
- private bool IsHoverDateSplitLine(Point e)
- {
- var t = (e.X + _HScrollBar.Value - RowHeaderWidth + this.DateWidth) % this.DateWidth;
- return e.X > this.RowHeaderWidth + 3 && e.X < ((EndDate.Date - StartDate.Date).TotalDays + 1) * DateWidth + RowHeaderWidth - _HScrollBar.Value && (this.DateWidth - 2 <= t || t <= 1);
- }
- ///
- /// 鼠标是否经过行标题
- ///
- ///
- ///
- private bool IsHoverRowHeader(Point e)
- {
- return e.X <= this.RowHeaderWidth && e.Y > this.ColumnHeight;
- }
- ///
- /// 鼠标是否经过行
- ///
- ///
- ///
- private bool IsHoverRow(Point e)
- {
- var y = e.Y + _VScrollBar.Value;
- return e.X < ((EndDate.Date - StartDate.Date).TotalDays + 1) * DateWidth + RowHeaderWidth - _HScrollBar.Value && e.Y > this.ColumnHeight && Rows != null ? Rows.Any(r=>r.Top <= y && r.Bottom >= y) : false;
- }
- ///
- /// 鼠标是否经过项
- ///
- ///
- ///
- private bool IsHoverItem(Point e)
- {
- if(e.X > this.RowHeaderWidth && e.Y > this.ColumnHeight && Rows != null)
- {
- var row = GetRow(e);
- if (row != null && row.Items != null && row.Items.Any())
- {
- var x = e.X + _HScrollBar.Value;
- var y = e.Y + _VScrollBar.Value;
- return row.Items.Any(r=>r.Left<=x && x <= r.Left + Math.Max(r.Width, r.TextWidth) && r.Top <= y && y <= r.Top + ItemHeight);
- }
- }
- return false;
- }
- ///
- /// 获取项
- ///
- ///
- ///
- private GanttChartViewItem GetItem(Point e)
- {
- if (e.X > this.RowHeaderWidth && e.X < ((EndDate.Date - StartDate.Date).TotalDays + 1) * DateWidth + RowHeaderWidth - _HScrollBar.Value && e.Y > this.ColumnHeight && Rows != null)
- {
- var row = GetRow(e);
- if (row != null && row.Items != null && row.Items.Any())
- {
- var x = e.X + _HScrollBar.Value;
- var y = e.Y + _VScrollBar.Value;
- return row.Items.OrderBy(r=>r.Left).LastOrDefault(r => r.Left <= x && x <= r.Left + Math.Max(r.Width, r.TextWidth) && r.Top <= y && y <= r.Top + ItemHeight);
- }
- }
- return null;
- }
- ///
- /// 获取行
- ///
- ///
- ///
- private GanttChartViewRow GetRow(Point e)
- {
- if (e.X < ((EndDate.Date - StartDate.Date).TotalDays + 1) * DateWidth + RowHeaderWidth - _HScrollBar.Value && e.Y > this.ColumnHeight && e.Y + _VScrollBar.Value < (Rows == null || !Rows.Any() ? 0 : Rows.Max(r=>r.Bottom)) && Rows != null)
- {
- var y = e.Y + _VScrollBar.Value;
- return Rows.FirstOrDefault(r => r.Top <= y && r.Bottom >= y);
- }
- return null;
- }
- ///
- /// 计算所有行和项的大小
- ///
- private void ComputeRowsAndItemsSize()
- {
- var minuteWidth = DateWidth / 24f / 60f;
- var currentRowY = ColumnHeight;
- foreach (var row in Rows)
- {
- row.Top = currentRowY;
- var currentItemY = currentRowY + RowSpacing;
- row.Bottom = currentRowY;
- if(row.Items != null)
- {
- var beforeTop = row.Top + RowSpacing;
- var beforeRight = 0;
- var items = row.Items.OrderBy(r => r.StartTime).ToList();
- for ( int i = 0; i < items.Count; i++)
- {
- var item = items[i];
- if (item.EndTime >= StartTime && item.StartTime <= EndTime && item.EndTime >= item.StartTime)
- {
- item.Left = (int)((item.StartTime - StartTime).TotalMinutes * minuteWidth) + RowHeaderWidth;
- item.Width = (int)((item.EndTime - item.StartTime).TotalMinutes * minuteWidth);
- item.TextWidth = TextRenderer.MeasureText(item.Title, ItemTextFont, System.Drawing.Size.Empty).Width;
- if (item.Left < beforeRight || BlockType == GanttChartViewItemBlockType.Block && i > 0)
- {
- var its = items.Take(i).GroupBy(r=>r.Top).Select(r=>r.OrderByDescending(p => p.Left + p.TextWidth).First());
- if(BlockType == GanttChartViewItemBlockType.Return && its.Any(r=>r.Left + r.TextWidth < item.Left))
- {
- var it = its.First(r => r.Left + r.TextWidth < item.Left);
- item.Top = it.Top;
- beforeTop = it.Top;
- }
- else
- {
- if(BlockType == GanttChartViewItemBlockType.Return && its.Any())
- {
- beforeTop = its.Max(r => r.Top);
- }
- item.Top = beforeTop + ItemHeight + ItemSpacing;
- beforeTop += ItemHeight + ItemSpacing;
- }
- }
- else
- {
- if (i > 0)
- {
- if (BlockType == GanttChartViewItemBlockType.Return && beforeTop != row.Top + RowSpacing)
- {
- beforeTop = row.Top + RowSpacing;
- }
- }
- item.Top = beforeTop;
- }
- if (BlockType == GanttChartViewItemBlockType.Compact)
- {
- beforeRight = item.Left + item.Width;
- }
- else
- {
- beforeRight = item.Left + Math.Max(item.TextWidth, item.Width);
- }
- if (item.Ranges != null && item.Ranges.Any())
- {
- var subs = item.Ranges.OrderBy(r => r.StartTime);
- foreach (var sub in subs)
- {
- sub.Left = item.Left + (int)((sub.StartTime - item.StartTime).TotalMinutes * minuteWidth);
- sub.Width = (int)((sub.EndTime - sub.StartTime).TotalMinutes * minuteWidth);
- }
- }
- }
- else
- {
- //row.Items.Remove(item);
- //i--;
- }
- }
- }
- if (row.Items == null || !row.Items.Any(r=>r.Left > 0))
- {
- row.Bottom = row.Top + ItemHeight + RowSpacing * 2;
- }
- else
- {
- row.Bottom = Math.Max(row.Items.Max(r => r.Top), ColumnHeight + RowSpacing) + ItemHeight + RowSpacing;
- }
- currentRowY = row.Bottom;
- }
- }
- ///
- /// 计算提示框的位置
- ///
- ///
- ///
- private Point ComputeTooltipLocation(Point e)
- {
- var size = TooltipOuterSize;
- var x = e.X;
- if (e.X + size.Width > _ContentControl.Width)
- {
- var t = e.X - size.Width;
- if (t < 0 && 0 - t < (e.X + size.Width) - _ContentControl.Width || t >= 0)
- {
- x = t;
- }
- }
- var y = _ShowTooltipItem.Top - _VScrollBar.Value + ItemHeight + ItemSpacing;
- if(y + size.Height > _ContentControl.Height)
- {
- var t = _ShowTooltipItem.Top - _VScrollBar.Value - ItemSpacing - size.Height;
- if (t < 0 && 0 - t < (y + size.Height) - _ContentControl.Height || t >= 0)
- {
- y = t;
- }
- }
- return new Point(x, y);
- }
- }
-}
diff --git a/GanttChart/GanttChartView.Properties.cs b/GanttChart/GanttChartView.Properties.cs
deleted file mode 100644
index ebc8ac3..0000000
--- a/GanttChart/GanttChartView.Properties.cs
+++ /dev/null
@@ -1,756 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-
-namespace GanttChart
-{
- ///
- /// 甘特图控件
- /// 该部分类主要是甘特图的属性
- ///
- public partial class GanttChartView
- {
- #region Fonts
- private Font _ColumnDateTextFont = DefaultFont;
-
- ///
- /// 日期字体
- ///
- public Font ColumnDateTextFont
- {
- get { return _ColumnDateTextFont; }
- set { _ColumnDateTextFont = value; OnPropertyChanged(nameof(ColumnDateTextFont), value); }
- }
-
- private Font _ColumnHourTextFont = DefaultFont;
-
- ///
- /// 时间字体
- ///
- public Font ColumnHourTextFont
- {
- get { return _ColumnHourTextFont; }
- set { _ColumnHourTextFont = value; OnPropertyChanged(nameof(ColumnHourTextFont), value); }
- }
-
- private Font _RowHeaderTextFont = DefaultFont;
-
- ///
- /// 行标题字体
- ///
- public Font RowHeaderTextFont
- {
- get { return _RowHeaderTextFont; }
- set { _RowHeaderTextFont = value; OnPropertyChanged(nameof(RowHeaderTextFont), value); }
- }
-
- private Font _ItemTextFont = DefaultFont;
-
- ///
- /// 项字体
- ///
- public Font ItemTextFont
- {
- get { return _ItemTextFont; }
- set { _ItemTextFont = value; OnPropertyChanged(nameof(ItemTextFont), value); }
- }
-
- private Font _TooltipTextFont = DefaultFont;
-
- ///
- /// 提示文字字体
- ///
- public Font TooltipTextFont
- {
- get { return _TooltipTextFont; }
- set { _TooltipTextFont = value; OnPropertyChanged(nameof(TooltipTextFont), value); }
- }
- #endregion
- #region Colors
- private Color _GridColor = Color.FromArgb(210, 210, 210);
-
- ///
- /// 网格颜色
- ///
- public Color GridColor
- {
- get { return _GridColor; }
- set { _GridColor = value; OnPropertyChanged(nameof(GridColor), value); }
- }
-
- private Color _ColumnDateTextColor = Color.FromArgb(102, 102, 102);
-
- ///
- /// 日期文字颜色
- ///
- public Color ColumnDateTextColor
- {
- get { return _ColumnDateTextColor; }
- set { _ColumnDateTextColor = value; OnPropertyChanged(nameof(ColumnDateTextColor), value); }
- }
-
- private Color _ColumnHourTextColor = Color.FromArgb(102, 102, 102);
-
- ///
- /// 小时文字颜色
- ///
- public Color ColumnHourTextColor
- {
- get { return _ColumnHourTextColor; }
- set { _ColumnHourTextColor = value; OnPropertyChanged(nameof(ColumnHourTextColor), value); }
- }
-
- private Color _HeaderBackColor = Color.FromArgb(247, 247, 247);
-
- ///
- /// 标题背景颜色
- ///
- public Color HeaderBackColor
- {
- get { return _HeaderBackColor; }
- set { _HeaderBackColor = value; OnPropertyChanged(nameof(HeaderBackColor), value); }
- }
-
- private Color _ContentBackColor = Color.White;
-
- ///
- /// 内容背景颜色
- ///
- public Color ContentBackColor
- {
- get { return _ContentBackColor; }
- set { _ContentBackColor = value; OnPropertyChanged(nameof(ContentBackColor), value); }
- }
-
- private Color _CurrentTimeLineColor = Color.Red;
-
- ///
- /// 当前时间线颜色
- ///
- public Color CurrentTimeLineColor
- {
- get { return _CurrentTimeLineColor; }
- set { _CurrentTimeLineColor = value; OnPropertyChanged(nameof(CurrentTimeLineColor), value); }
- }
-
- private Color _ItemTextColor = Color.FromArgb(51, 51, 51);
-
- ///
- /// 项文字颜色
- ///
- public Color ItemTextColor
- {
- get { return _ItemTextColor; }
- set { _ItemTextColor = value; OnPropertyChanged(nameof(ItemTextColor), value); }
- }
-
- private Color _ItemBackColor = Color.FromArgb(190, 190, 190);
-
- ///
- /// 项背景颜色
- ///
- public Color ItemBackColor
- {
- get { return _ItemBackColor; }
- set { _ItemBackColor = value; OnPropertyChanged(nameof(ItemBackColor), value); }
- }
-
- private Color _ItemBorderColor = Color.FromArgb(18, 170, 11);
-
- ///
- /// 项边框颜色
- ///
- public Color ItemBorderColor
- {
- get { return _ItemBorderColor; }
- set { _ItemBorderColor = value; OnPropertyChanged(nameof(ItemBorderColor), value); }
- }
-
- private Color _ItemStartFlagColor = Color.Red;
-
- ///
- /// 项首标志颜色
- ///
- public Color ItemStartFlagColor
- {
- get { return _ItemStartFlagColor; }
- set { _ItemStartFlagColor = value; OnPropertyChanged(nameof(ItemStartFlagColor), value); }
- }
-
- private Color _ItemSubRangeBackColor = Color.FromArgb(153, 201, 255);
-
- ///
- /// 项时间范围背景颜色
- ///
- public Color ItemSubRangeBackColor
- {
- get { return _ItemSubRangeBackColor; }
- set { _ItemSubRangeBackColor = value; OnPropertyChanged(nameof(ItemSubRangeBackColor), value); }
- }
-
- private Color _ItemSelectionTextColor = Color.FromArgb(18, 170, 11);
-
- ///
- /// 选中项文字颜色
- ///
- public Color ItemSelectionTextColor
- {
- get { return _ItemSelectionTextColor; }
- set { _ItemSelectionTextColor = value; OnPropertyChanged(nameof(ItemSelectionTextColor), value); }
- }
-
- private Color _ItemSelectionBackColor = Color.FromArgb(229, 249, 229);
-
- ///
- /// 选中项背景颜色
- ///
- public Color ItemSelectionBackColor
- {
- get { return _ItemSelectionBackColor; }
- set { _ItemSelectionBackColor = value; OnPropertyChanged(nameof(ItemSelectionBackColor), value); }
- }
-
- private Color _ItemSelectionBorderColor = Color.FromArgb(18, 170, 11);
-
- ///
- /// 选中项边框颜色
- ///
- public Color ItemSelectionBorderColor
- {
- get { return _ItemSelectionBorderColor; }
- set { _ItemSelectionBorderColor = value; OnPropertyChanged(nameof(ItemSelectionBorderColor), value); }
- }
-
- private Color _ItemSelectionSubRangeBackColor = Color.FromArgb(153, 201, 255);
-
- ///
- /// 选中项时间范围背景颜色
- ///
- public Color ItemSelectionSubRangeBackColor
- {
- get { return _ItemSelectionSubRangeBackColor; }
- set { _ItemSelectionSubRangeBackColor = value; OnPropertyChanged(nameof(ItemSelectionSubRangeBackColor), value); }
- }
-
- private Color _RowHeaderTextColor = Color.FromArgb(102, 102, 102);
-
- ///
- /// 行标题文字颜色
- ///
- public Color RowHeaderTextColor
- {
- get { return _RowHeaderTextColor; }
- set { _RowHeaderTextColor = value; OnPropertyChanged(nameof(RowHeaderTextColor), value); }
- }
-
- private Color _RowSelectionHeaderTextColor = Color.FromArgb(102, 102, 102);
-
- ///
- /// 选中行标题文字颜色
- ///
- public Color RowSelectionHeaderTextColor
- {
- get { return _RowSelectionHeaderTextColor; }
- set { _RowSelectionHeaderTextColor = value; OnPropertyChanged(nameof(RowSelectionHeaderTextColor), value); }
- }
-
- private Color _RowSelectionBorderColor = Color.FromArgb(247, 247, 247);
-
- ///
- /// 选中行边框颜色
- ///
- public Color RowSelectionBorderColor
- {
- get { return _RowSelectionBorderColor; }
- set { _RowSelectionBorderColor = value; OnPropertyChanged(nameof(RowSelectionBorderColor), value); }
- }
-
- private Color _RowSelectionHeaderBackColor = Color.FromArgb(247, 247, 247);
-
- ///
- /// 选中行标题背景颜色
- ///
- public Color RowSelectionHeaderBackColor
- {
- get { return _RowSelectionHeaderBackColor; }
- set { _RowSelectionHeaderBackColor = value; OnPropertyChanged(nameof(RowSelectionHeaderBackColor), value); }
- }
-
- private Color _RowSelectionContentBackColor = Color.FromArgb(247, 247, 247);
-
- ///
- /// 选中行内容背景颜色
- ///
- public Color RowSelectionContentBackColor
- {
- get { return _RowSelectionContentBackColor; }
- set { _RowSelectionContentBackColor = value; OnPropertyChanged(nameof(RowSelectionContentBackColor), value); }
- }
-
- private Color _TooltipTextColor = Color.FromArgb(237, 237, 237);
-
- ///
- /// 提示文字颜色
- ///
- public Color TooltipTextColor
- {
- get { return _TooltipTextColor; }
- set { _TooltipTextColor = value; OnPropertyChanged(nameof(TooltipTextColor), value); }
- }
-
- private Color _TooltipBorderColor = Color.FromArgb(102, 0, 0, 0);
-
- ///
- /// 提示边框颜色
- ///
- public Color TooltipBorderColor
- {
- get { return _TooltipBorderColor; }
- set { _TooltipBorderColor = value; OnPropertyChanged(nameof(TooltipBorderColor), value); }
- }
-
- private Color _TooltipBackColor = Color.FromArgb(102, 0, 0, 0);
-
- ///
- /// 提示背景颜色
- ///
- public Color TooltipBackColor
- {
- get { return _TooltipBackColor; }
- set { _TooltipBackColor = value; OnPropertyChanged(nameof(TooltipBackColor), value); }
- }
-
- private Color _TimeRangeSelecetionBackColor = Color.FromArgb(153, 201, 255);
-
- ///
- /// 选中时间范围背景颜色
- ///
- public Color TimeRangeSelecetionBackColor
- {
- get { return _TimeRangeSelecetionBackColor; }
- set { _TimeRangeSelecetionBackColor = value; OnPropertyChanged(nameof(TimeRangeSelecetionBackColor), value); }
- }
-
- private Color _SelectionRectangleBackColor = Color.FromArgb(80, 210, 210, 210);
-
- ///
- /// 选择框背景颜色
- ///
- public Color SelectionRectangleBackColor
- {
- get { return _SelectionRectangleBackColor; }
- set { _SelectionRectangleBackColor = value; OnPropertyChanged(nameof(SelectionRectangleBackColor), value); }
- }
-
- private Color _ItemWarnningTextColor = Color.Red;
-
- ///
- /// 项警告文字颜色
- ///
- public Color ItemWarnningTextColor
- {
- get { return _ItemWarnningTextColor; }
- set { _ItemWarnningTextColor = value; OnPropertyChanged(nameof(ItemWarnningTextColor), value); }
- }
- #endregion
- #region Mouse
- private float _MouseWheelSensitivity = 0.5f;
-
- ///
- /// 鼠标滚轮灵敏度
- ///
- [DefaultValue(0.5f)]
- public float MouseWheelSensitivity
- {
- get { return _MouseWheelSensitivity; }
- set { _MouseWheelSensitivity = value; OnPropertyChanged(nameof(MouseWheelSensitivity), value); }
- }
- #endregion
- #region Size
- private int _ItemHeight = 30;
-
- ///
- /// 项高度
- ///
- [DefaultValue(30)]
- public int ItemHeight
- {
- get { return _ItemHeight; }
- set { _ItemHeight = value; OnPropertyChanged(nameof(ItemHeight), value); }
- }
-
- private int _RowHeaderWidth = 150;
-
- ///
- /// 行标题宽度
- ///
- [DefaultValue(150)]
- public int RowHeaderWidth
- {
- get { return _RowHeaderWidth; }
- set { _RowHeaderWidth = value; OnPropertyChanged(nameof(RowHeaderWidth), value); }
- }
-
- private int _RowHeight = 100;
-
- ///
- /// 行高
- ///
- [DefaultValue(100)]
- public int RowHeight
- {
- get { return _RowHeight; }
- set { _RowHeight = value; OnPropertyChanged(nameof(RowHeight), value); }
- }
-
- private int _ColumnDateHeight = 30;
-
- ///
- /// 日期高度
- ///
- [DefaultValue(30)]
- public int ColumnDateHeight
- {
- get { return _ColumnDateHeight; }
- set { _ColumnDateHeight = value; OnPropertyChanged(nameof(ColumnDateHeight), value); }
- }
-
- private int _ColumnHourHeight = 30;
-
- ///
- /// 小时高度
- ///
- [DefaultValue(30)]
- public int ColumnHourHeight
- {
- get { return _ColumnHourHeight; }
- set { _ColumnHourHeight = value; OnPropertyChanged(nameof(ColumnHourHeight), value); }
- }
-
- private int _DateWidth = MinDateWidth;
-
- ///
- /// 日期宽度
- ///
- [DefaultValue(MinDateWidth)]
- public int DateWidth
- {
- get { return _DateWidth; }
- set { _DateWidth = value; OnPropertyChanged(nameof(DateWidth), value); }
- }
-
- private int _HScrollHeight = 15;
-
- ///
- /// 横向滚动条高度
- ///
- [DefaultValue(15)]
- public int HScrollHeight
- {
- get { return _HScrollHeight; }
- set { _HScrollHeight = value; OnPropertyChanged(nameof(HScrollHeight), value); }
- }
-
- private int _VScrollWidth = 15;
-
- ///
- /// 纵向滚动条宽度
- ///
- [DefaultValue(15)]
- public int VScrollWidth
- {
- get { return _VScrollWidth; }
- set { _VScrollWidth = value; OnPropertyChanged(nameof(VScrollWidth), value); }
- }
-
- private int _ItemSpacing = 2;
-
- ///
- /// 项的行间距
- ///
- [DefaultValue(2)]
- public int ItemSpacing
- {
- get { return _ItemSpacing; }
- set { _ItemSpacing = value; OnPropertyChanged(nameof(ItemSpacing), value); }
- }
-
- private int _RowSpacing = 5;
-
- ///
- /// 行间距
- ///
- [DefaultValue(5)]
- public int RowSpacing
- {
- get { return _RowSpacing; }
- set { _RowSpacing = value; OnPropertyChanged(nameof(RowSpacing), value); }
- }
- #endregion
- #region Control
- private bool _IsFixedRowHeight = false;
-
- ///
- /// 是否固定行高
- ///
- [DefaultValue(false)]
- public bool IsFixedRowHeight
- {
- get { return _IsFixedRowHeight; }
- set { _IsFixedRowHeight = value; OnPropertyChanged(nameof(IsFixedRowHeight), value); }
- }
-
- private bool _EnableEdit = false;
-
- ///
- /// 启用编辑
- ///
- [DefaultValue(false)]
- public bool EnableEdit
- {
- get { return _EnableEdit; }
- set { _EnableEdit = value; OnPropertyChanged(nameof(EnableEdit), value); }
- }
-
- private bool _AllowItemNotWrap = true;
-
- ///
- /// 允许项文字换行
- ///
- [DefaultValue(true)]
- public bool AllowItemNotWrap
- {
- get { return _AllowItemNotWrap; }
- set { _AllowItemNotWrap = value; OnPropertyChanged(nameof(AllowItemNotWrap), value); }
- }
-
- private bool _IsShowItemBorder = false;
-
- ///
- /// 是否显示项边框
- ///
- [DefaultValue(false)]
- public bool IsShowItemBorder
- {
- get { return _IsShowItemBorder; }
- set { _IsShowItemBorder = value; OnPropertyChanged(nameof(IsShowItemBorder), value); }
- }
-
- private bool _AllowHeaderNotWrap = true;
-
- ///
- /// 允许行标题文字换行
- ///
- [DefaultValue(true)]
- public bool AllowHeaderNotWrap
- {
- get { return _AllowHeaderNotWrap; }
- set { _AllowHeaderNotWrap = value; OnPropertyChanged(nameof(AllowHeaderNotWrap), value); }
- }
-
- private GanttChartViewItemBlockType _BlockType = GanttChartViewItemBlockType.TextOverBlock;
-
- ///
- /// 项换行模式
- ///
- public GanttChartViewItemBlockType BlockType
- {
- get { return _BlockType; }
- set { _BlockType = value; OnPropertyChanged(nameof(BlockType), value); }
- }
-
- private bool _IsShowSelectionBorder = false;
-
- ///
- /// 显示行选中高亮边框
- ///
- [DefaultValue(false)]
- public bool IsShowSelectionBorder
- {
- get { return _IsShowSelectionBorder; }
- set { _IsShowSelectionBorder = value; OnPropertyChanged(nameof(IsShowSelectionBorder), value); }
- }
-
- private bool _AllowSelectRange = false;
-
- ///
- /// 允许选中时间范围
- ///
- [DefaultValue(false)]
- public bool AllowSelectRange
- {
- get { return _AllowSelectRange; }
- set { _AllowSelectRange = value; OnPropertyChanged(nameof(AllowSelectRange), value); }
- }
-
- private Func _SelectionItemSameComparator = null;
-
- ///
- /// 选择项的同类项比较器
- ///
- public Func SelectionItemSameComparator
- {
- get { return _SelectionItemSameComparator; }
- set { _SelectionItemSameComparator = value; }
- }
- #endregion
- #region DataSource
- private DateTime _StartDate = DateTime.Today;
-
- ///
- /// 开始日期
- ///
- public DateTime StartDate
- {
- get { return _StartDate; }
- set { _StartDate = value; OnPropertyChanged(nameof(StartDate), value); }
- }
-
- private DateTime _EndDate = DateTime.Today.AddDays(1);
-
- ///
- /// 结束日期
- ///
- public DateTime EndDate
- {
- get { return _EndDate; }
- set { _EndDate = value; OnPropertyChanged(nameof(EndDate), value); }
- }
-
- private GanttChartCollection _Rows = new GanttChartCollection();
-
- ///
- /// 行集合
- ///
- public GanttChartCollection Rows
- {
- get { return _Rows; }
- set { _Rows = value; OnPropertyChanged(nameof(Rows), value); }
- }
-
- private GanttChartViewRow _SelectionRow = null;
-
- ///
- /// 选中的行
- ///
- public GanttChartViewRow SelectionRow
- {
- get { return _SelectionRow; }
- set { _SelectionRow = value; OnPropertyChanged(nameof(SelectionRow), value); }
- }
-
- private GanttChartViewItem _SelectionItem = null;
-
- ///
- /// 选中的项
- ///
- public GanttChartViewItem SelectionItem
- {
- get { return _SelectionItem; }
- set { _SelectionItem = value; OnPropertyChanged(nameof(SelectionItem), value); }
- }
-
- private TimeRange _SelectionTimeRange = null;
-
- ///
- /// 选中的时间范围
- ///
- public TimeRange SelectionTimeRange
- {
- get { return _SelectionTimeRange; }
- set { _SelectionTimeRange = value; OnPropertyChanged(nameof(SelectionTimeRange), value); }
- }
-
- private DateTime _DateSplitTime = DateTime.MinValue;
-
- ///
- /// 日分割时间
- ///
- public DateTime DateSplitTime
- {
- get { return _DateSplitTime; }
- set { _DateSplitTime = value; OnPropertyChanged(nameof(DateSplitTime), value); }
- }
-
- private string _DateTimeShowText = "时间";
-
- ///
- /// 时间显示文本
- ///
- [DefaultValue("时间")]
- public string DateTimeShowText
- {
- get { return _DateTimeShowText; }
- set { _DateTimeShowText = value; OnPropertyChanged(nameof(DateTimeShowText), value); }
- }
-
- private string _RowTitleShowText = "资源";
-
- ///
- /// 行头显示文本
- ///
- [DefaultValue("资源")]
- public string RowTitleShowText
- {
- get { return _RowTitleShowText; }
- set { _RowTitleShowText = value; OnPropertyChanged(nameof(RowTitleShowText), value); }
- }
- #endregion
-
- #region ReadOnly
- public int ColumnHeight
- {
- get { return ColumnDateHeight + ColumnHourHeight; }
- }
-
- public int TotalDays
- {
- get
- {
- return (int)(EndDate.Date - StartDate.Date).TotalDays + 1;
- }
- }
- public DateTime StartTime
- {
- get
- {
- return StartDate.Date.Add(DateSplitTime - DateSplitTime.Date);
- }
- }
- public DateTime EndTime
- {
- get
- {
- return EndDate.Date.Add(DateSplitTime - DateSplitTime.Date);
- }
- }
- private Size TooltipSize
- {
- get
- {
- var size = TextRenderer.MeasureText(_ShowTooltipItem.Tooltip, TooltipTextFont, Size.Empty);
- size.Height = size.Height + (int)((_ShowTooltipItem.Tooltip.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).Length - 1) * 1.7);
- return size;
- }
- }
- private Size TooltipOuterSize
- {
- get
- {
- var size = TooltipSize;
- size.Width += RowSpacing * 2;
- size.Height += RowSpacing * 2;
- return size;
- }
- }
- #endregion
-
- #region Const
- private const int MinDateWidth = 3 * 48;
- #endregion
- }
-}
diff --git a/GanttChart/GanttChartView.Render.cs b/GanttChart/GanttChartView.Render.cs
deleted file mode 100644
index 82aad03..0000000
--- a/GanttChart/GanttChartView.Render.cs
+++ /dev/null
@@ -1,409 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-
-namespace GanttChart
-{
- ///
- /// 甘特图控件
- /// 该部分类用于处理甘特图的绘制渲染
- ///
- public partial class GanttChartView
- {
- ///
- /// 画背景
- ///
- ///
- ///
- protected virtual void DrawBack(Graphics graphics, int bottom)
- {
- graphics.FillRectangle(this.Brushes.BackBrush, _ContentControl.DisplayRectangle);
- var range = new RectangleF(new PointF(0, 0), new SizeF(TotalDays * DateWidth + RowHeaderWidth - _HScrollBar.Value, bottom - _VScrollBar.Value));
- graphics.SetClip(range);
- graphics.FillRectangle(this.Brushes.HeaderBackBrush, range);
- range = new RectangleF(new PointF(0, ColumnHeight), new SizeF(TotalDays * DateWidth + RowHeaderWidth - _HScrollBar.Value, bottom - ColumnHeight - _VScrollBar.Value));
- graphics.FillRectangle(this.Brushes.ContentBackBrush, range);
- if (_SelectionRow != null)
- {
- var selectionHeader = new Rectangle(1, _SelectionRow.Top + 1 - _VScrollBar.Value, RowHeaderWidth - 2, (int)(_SelectionRow.Bottom - _SelectionRow.Top - 1));
- var selectionContent = new Rectangle(RowHeaderWidth, _SelectionRow.Top + 1 - _VScrollBar.Value, (int)(TotalDays * DateWidth - _HScrollBar.Value - 1), selectionHeader.Height);
- graphics.FillRectangle(this.Brushes.RowSelectionHeaderBackBrush, selectionHeader);
- graphics.FillRectangle(this.Brushes.RowSelectionContentBackBrush, selectionContent);
- }
- graphics.ResetClip();
- }
- ///
- /// 画没有数据
- ///
- ///
- ///
- protected virtual void DrawNonData(Graphics graphics, int bottom)
- {
-
- }
- ///
- /// 画提示框
- ///
- ///
- protected virtual void DrawItemTooltip(Graphics graphics)
- {
- if (!_IsShowTooltip) return;
- var size = TooltipSize;
- var border = new Rectangle(_ShowTooltipPoint, new Size(size.Width + RowSpacing * 2, size.Height + RowSpacing * 2));
- var content = new Point(_ShowTooltipPoint.X + RowSpacing, _ShowTooltipPoint.Y + RowSpacing);
- graphics.FillRectangle(this.Brushes.TooltipBackBrush, border);
- graphics.DrawRectangle(this.Brushes.TooltipBorderPen, border);
- graphics.DrawString(_ShowTooltipItem.Tooltip, TooltipTextFont, this.Brushes.TooltipTextBrush, content);
- //TextRenderer.DrawText(graphics, _ShowTooltipItem.Tooltip, TooltipTextFont, content, TooltipTextColor);
- }
- ///
- /// 画选中范围
- ///
- ///
- protected virtual void DrawSelectionRange(Graphics graphics)
- {
- if (!AllowSelectRange || _SelectionRange.IsEmpty) return;
- graphics.FillRectangle(this.Brushes.TimeRangeSelecetionBackBrush, _SelectionRange);
- }
- ///
- /// 画选中的矩形
- ///
- ///
- protected virtual void DrawSelectingRectangle(Graphics graphics)
- {
- if (!AllowSelectRange || _DragStartLocation.IsEmpty || _DragEndLocation.IsEmpty || _DragStartLocation == _DragEndLocation || _DragStartLocation.X <= RowHeaderWidth || _DragStartLocation.Y <= ColumnHeight) return;
- var row = GetRow(_DragStartLocation);
- if (row == null) return;
- var start = new Point(Math.Min(_DragStartLocation.X, Math.Max(_DragEndLocation.X, RowHeaderWidth)), Math.Min(_DragStartLocation.Y, Math.Max(_DragEndLocation.Y, row.Top)));
- var height = Math.Abs(Math.Min(_DragEndLocation.Y, row.Bottom - _VScrollBar.Value) - _DragStartLocation.Y);
- var width = Math.Abs(_DragEndLocation.X - _DragStartLocation.X);
- if (_DragEndLocation.Y < row.Top)
- {
- height -= row.Top - _DragEndLocation.Y;
- }
- if (_DragEndLocation.X < RowHeaderWidth)
- {
- width -= RowHeaderWidth - _DragEndLocation.X;
- }
- else if(_DragEndLocation.X > TotalDays * DateWidth + RowHeaderWidth - _HScrollBar.Value)
- {
- width = TotalDays * DateWidth + RowHeaderWidth - _HScrollBar.Value - _DragStartLocation.X;
- }
- var rect = new RectangleF(start, new SizeF(width, height));
- graphics.FillRectangle(this.Brushes.SelectionRectangleBackBrush, rect);
- }
- ///
- /// 画项的时间范围
- ///
- ///
- ///
- ///
- protected virtual void DrawItemTimeRange(Graphics graphics, GanttChartViewItem item, TimeRange sub)
- {
- var width = sub.Width;
- var right = sub.Left + sub.Width;
- if (right == item.Left + item.Width)
- {
- width = width - 2;
- if(width < 1)
- {
- return;
- }
- }
- if (item == _SelectionItem)
- {
- graphics.FillRectangle(this.Brushes.ItemSelectionSubRangeBackBrush, sub.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, width, ItemHeight);
- graphics.DrawRectangle(this.Brushes.ItemSelectionSubRangeBackPen, sub.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, width, ItemHeight);
- }
- else
- {
- graphics.FillRectangle(this.Brushes.ItemSubRangeBackBrush, sub.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, width, ItemHeight);
- graphics.DrawRectangle(this.Brushes.ItemSubRangeBackPen, sub.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, width, ItemHeight);
- }
- }
- ///
- /// 画项
- ///
- ///
- ///
- ///
- ///
- protected virtual void DrawItem(Graphics graphics, StringFormat titleFormat, GanttChartViewItem item, RectangleF range)
- {
- var clip = new RectangleF(range.X, (range.Y < ColumnHeight ? ColumnHeight : range.Y) + 1, range.Width, (range.Y < ColumnHeight ? (range.Height - (ColumnHeight - range.Y)) : range.Height) - 2);
- graphics.SetClip(clip);
- if (item.Ranges != null && item.Ranges.Any())
- {
- graphics.FillRectangle(this.Brushes.ItemBackBrush, item.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, Math.Max(item.Width - 2, 2), ItemHeight);
- graphics.DrawRectangle(this.Brushes.ItemBackPen, item.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, Math.Max(item.Width - 2, 2), ItemHeight);
- var subs = item.Ranges.OrderBy(r => r.StartTime);
- foreach (var sub in subs)
- {
- DrawItemTimeRange(graphics, item, sub);
- }
- }
- else
- {
- graphics.FillRectangle(this.Brushes.ItemSubRangeBackBrush, item.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, Math.Max(item.Width - 2, 2), ItemHeight);
- graphics.DrawRectangle(this.Brushes.ItemSubRangeBackPen, item.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, Math.Max(item.Width - 2, 2), ItemHeight);
- }
- if (item == _SelectionItem)
- {
- var textBrush = item.IsWarnning ? this.Brushes.ItemWarnningTextBrush : this.Brushes.ItemSelectionTextBrush;
- graphics.DrawLine(this.Brushes.ItemStartFlagPen, item.Left - _HScrollBar.Value + 1, item.Top - _VScrollBar.Value + ItemHeight / 2, item.Left - _HScrollBar.Value + 1, item.Top - _VScrollBar.Value + ItemHeight);
- graphics.DrawRectangle(this.Brushes.ItemSelectionBorderPen, item.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, Math.Max(item.Width - 2, 2), ItemHeight);
- graphics.DrawString(item.Title, ItemTextFont, textBrush, new RectangleF(item.Left - _HScrollBar.Value + 2, item.Top - _VScrollBar.Value + 1, 0, ItemHeight - 2), titleFormat);
- }
- else if(_SelectionItem != null && SelectionItemSameComparator != null && SelectionItemSameComparator(item, _SelectionItem))
- {
- var textBrush = item.IsWarnning ? this.Brushes.ItemWarnningTextBrush : this.Brushes.ItemSelectionTextBrush;
- graphics.DrawLine(this.Brushes.ItemStartFlagPen, item.Left - _HScrollBar.Value + 1, item.Top - _VScrollBar.Value + ItemHeight / 2, item.Left - _HScrollBar.Value + 1, item.Top - _VScrollBar.Value + ItemHeight);
- if (IsShowItemBorder)
- graphics.DrawRectangle(this.Brushes.ItemBorderPen, item.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, Math.Max(item.Width - 2, 2), ItemHeight);
- graphics.DrawString(item.Title, ItemTextFont, textBrush, new RectangleF(item.Left - _HScrollBar.Value + 2, item.Top - _VScrollBar.Value + 1, 0, ItemHeight - 2), titleFormat);
- }
- else
- {
- var textBrush = item.IsWarnning ? this.Brushes.ItemWarnningTextBrush : this.Brushes.ItemTextBrush;
- graphics.DrawLine(this.Brushes.ItemStartFlagPen, item.Left - _HScrollBar.Value + 1, item.Top - _VScrollBar.Value + ItemHeight / 2, item.Left - _HScrollBar.Value + 1, item.Top - _VScrollBar.Value + ItemHeight);
- if (IsShowItemBorder)
- graphics.DrawRectangle(this.Brushes.ItemBorderPen, item.Left - _HScrollBar.Value, item.Top - _VScrollBar.Value, Math.Max(item.Width - 2, 2), ItemHeight);
- graphics.DrawString(item.Title, ItemTextFont, textBrush, new RectangleF(item.Left - _HScrollBar.Value + 2, item.Top - _VScrollBar.Value + 1, 0, ItemHeight - 2), titleFormat);
- }
- graphics.ResetClip();
- }
- ///
- /// 画行
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- protected virtual void DrawRow(Graphics graphics, StringFormat headerFormat, StringFormat titleFormat, GanttChartViewRow row, RectangleF range, RectangleF rowRect)
- {
- graphics.SetClip(range);
- var drawY = rowRect.Y + RowSpacing;
- var drawHeight = rowRect.Height - RowSpacing * 2;
- if (drawHeight > (_ContentControl.Height - ColumnHeight) / 4)
- {
- drawY = Math.Max(rowRect.Y, ColumnHeight);
- drawHeight = Math.Min(rowRect.Bottom - RowSpacing, _ContentControl.Height) - drawY;
- }
- graphics.DrawString(row.Title, RowHeaderTextFont, this.Brushes.RowHeaderTextBrush, new RectangleF(rowRect.X + RowSpacing, drawY, RowHeaderWidth - RowSpacing * 2, drawHeight), headerFormat);
- graphics.ResetClip();
- if(row.Items != null)
- {
- var items = row.Items.OrderBy(r=>r.StartTime);
- foreach (var item in items)
- {
- if (item.Left + item.Width - _HScrollBar.Value > RowHeaderWidth)
- {
- if (item.Left - _HScrollBar.Value < range.Right)
- {
- DrawItem(graphics, titleFormat, item, new RectangleF(RowHeaderWidth + 1, rowRect.Y + 1, rowRect.Width - RowHeaderWidth - 2, rowRect.Height - 2));
- }
- }
- }
- }
- graphics.SetClip(range);
- graphics.DrawLine(this.Brushes.GridPen, 0, row.Bottom - _VScrollBar.Value, rowRect.Width, row.Bottom - _VScrollBar.Value);
- if (_SelectionRow == row && IsShowSelectionBorder)
- {
- var selectionRect = new Rectangle(1, row.Top + 1, (int)(range.Width - 3), (int)(row.Bottom - row.Top - 2));
- graphics.DrawRectangle(this.Brushes.RowSelectionBorderPen, selectionRect);
- }
- graphics.ResetClip();
- }
- ///
- /// 画所有行
- ///
- ///
- ///
- protected virtual void DrawRows(Graphics graphics, int bottom)
- {
- var range = new RectangleF(0, ColumnHeight, RowHeaderWidth + TotalDays * DateWidth - _HScrollBar.Value, bottom - _VScrollBar.Value + 1);
- graphics.DrawLine(this.Brushes.GridPen, RowHeaderWidth, ColumnDateHeight, range.Width - 1, ColumnDateHeight);
- graphics.SetClip(range);
- graphics.DrawLine(this.Brushes.GridPen, 0, ColumnHeight, range.Width - 1, ColumnHeight);
- if (Rows == null || !Rows.Any())
- {
- DrawNonData(graphics, bottom);
- graphics.DrawLine(this.Brushes.GridPen, 0, bottom, range.Width - 1, bottom);
- return;
- }
- graphics.ResetClip();
- var headerFormat = new StringFormat();
- headerFormat.Alignment = StringAlignment.Near;
- headerFormat.LineAlignment = StringAlignment.Center;
- var titleFormat = new StringFormat();
- titleFormat.Alignment = StringAlignment.Near;
- titleFormat.LineAlignment = StringAlignment.Center;
-
- titleFormat.FormatFlags = BlockType == GanttChartViewItemBlockType.Compact ? StringFormatFlags.LineLimit : StringFormatFlags.NoWrap;
- foreach (var row in Rows)
- {
- if (row.Bottom - _VScrollBar.Value > ColumnHeight)
- {
- var rowRect = new RectangleF(new PointF(0, row.Top - _VScrollBar.Value), new SizeF(range.Width, row.Bottom - row.Top + 1));
- if (!range.IntersectsWith(rowRect)) break;
- DrawRow(graphics, headerFormat, titleFormat, row, range, rowRect);
- }
- }
- }
- ///
- /// 画列
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- protected virtual void DrawColumn(Graphics graphics, StringFormat format, DateTime date, RectangleF range, int startX, int width, int cellHour)
- {
- var offsetMinutes = (int)(DateSplitTime - DateSplitTime.Date).TotalMinutes % (60 * cellHour);
- var offset = (int)(offsetMinutes / 60f * width);
- startX = startX - offset;
- var dt = date.AddMinutes(-offsetMinutes);
- for (DateTime i = dt; i < dt.AddDays(1); i = i.AddHours(cellHour))
- {
- var rectangle = new RectangleF(startX, ColumnDateHeight + 1, 0, ColumnHourHeight - 2);
- if (range.IntersectsWith(rectangle) && (offset != 0 || date.Hour != i.Hour))
- {
- graphics.DrawString(i.Hour == 0 ? "0" : i.Hour.ToString("##00"), ColumnDateTextFont, this.Brushes.ColumnHourTextBrush, rectangle, format);
- //graphics.DrawLine(this.Brushes.GridPen, rectangle.X, ColumnDateHeight, rectangle.X, ColumnDateHeight + ColumnHourHeight / 5);
- graphics.DrawLine(this.Brushes.GridPen, rectangle.X, ColumnDateHeight + ColumnHourHeight / 5 * 4, rectangle.X, ColumnDateHeight + ColumnHourHeight - 1);
- }
- startX += width * cellHour;
- }
- }
- ///
- /// 画列头
- ///
- ///
- protected virtual void DrawColumnHeader(Graphics graphics)
- {
- var range = new RectangleF(new PointF(RowHeaderWidth + 1, 1), new SizeF(TotalDays * DateWidth - 1, _ContentControl.Height - 2));
- graphics.SetClip(range);
- int cellHour = GetCellHours();
- var format = new StringFormat();
- format.Alignment = StringAlignment.Center;
- format.LineAlignment = StringAlignment.Center;
- format.FormatFlags = StringFormatFlags.LineLimit;
- var x = RowHeaderWidth;
- for (var i = StartTime; i <= EndTime; i = i.AddDays(1))
- {
- var dx = x - _HScrollBar.Value;
- var rectangle = new RectangleF(dx + 1, 1, DateWidth - 1, ColumnDateHeight - 2);
- if (rectangle.Right > RowHeaderWidth)
- {
- if (!range.IntersectsWith(rectangle))
- {
- x += DateWidth;
- continue;
- }
- graphics.DrawString(i.ToString("yyyy-MM-dd") + " 星期" + ("日一二三四五六"[(int)i.DayOfWeek]), ColumnDateTextFont, this.Brushes.ColumnDateTextBrush, rectangle, format);
- DrawColumn(graphics, format, i, range, (int)rectangle.X - 1, DateWidth / 24, cellHour);
- }
- x += DateWidth;
- }
- graphics.ResetClip();
- }
- ///
- /// 画行头
- ///
- ///
- ///
- protected virtual void DrawHeader(Graphics graphics, int bottom)
- {
- var range = new RectangleF(new PointF(0, 0), new SizeF(RowHeaderWidth + TotalDays * DateWidth, bottom - _VScrollBar.Value));
- graphics.SetClip(range);
- graphics.DrawLine(this.Brushes.GridPen, range.X, range.Y, range.X + RowHeaderWidth, range.Y + ColumnHeight);
- graphics.DrawString(this.DateTimeShowText, this.ColumnDateTextFont, this.Brushes.ColumnDateTextBrush,
- new Rectangle(0, 0, RowHeaderWidth - RowSpacing, ColumnDateHeight),
- new StringFormat { Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Center });
- graphics.DrawString(this.RowTitleShowText, this.RowHeaderTextFont, this.Brushes.RowHeaderTextBrush,
- new Rectangle(RowSpacing, ColumnDateHeight, RowHeaderWidth - RowSpacing, ColumnHourHeight - RowSpacing),
- new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Far });
- graphics.ResetClip();
- }
- ///
- /// 画时间线
- ///
- ///
- ///
- protected virtual void DrawTimeLine(Graphics graphics, int bottom)
- {
- var range = new RectangleF(new PointF(0, 0), new SizeF(RowHeaderWidth + TotalDays * DateWidth, bottom - _VScrollBar.Value));
- graphics.SetClip(range);
- graphics.DrawRectangle(this.Brushes.GridPen, _ContentControl.DisplayRectangle);
- var x = RowHeaderWidth - 1;
- if(StartTime == DateTime.Today.Add(DateSplitTime - DateSplitTime.Date))
- {
- graphics.DrawLine(this.Brushes.CurrentTimeLinePen, x, 0, x, _ContentControl.Height);
- }
- else
- {
- graphics.DrawLine(this.Brushes.GridPen, x, 0, x, _ContentControl.Height);
- }
- for (var i = StartTime; i <= EndTime; i = i.AddDays(1))
- {
- x += DateWidth;
- var dx = x - _HScrollBar.Value;
- if (dx + 1 > RowHeaderWidth)
- {
- if (dx + 1 > _ContentControl.Width) break;
- if(i.AddDays(1) == DateTime.Today.Add(DateSplitTime - DateSplitTime.Date))
- {
- graphics.DrawLine(this.Brushes.CurrentTimeLinePen, dx, 0, dx, _ContentControl.Height);
- }
- else
- {
- graphics.DrawLine(this.Brushes.GridPen, dx, 0, dx, _ContentControl.Height);
- }
- }
- }
- graphics.ResetClip();
- }
- ///
- /// 计算单元格小时
- ///
- ///
- private int GetCellHours()
- {
- var halfHourWidth = DateWidth / 48;
- int cellHour;
- if (halfHourWidth >= 12)
- {
- cellHour = 1;
- }
- else if (halfHourWidth >= 6)
- {
- cellHour = 2;
- }
- else if (halfHourWidth >= 4)
- {
- cellHour = 3;
- }
- else if (halfHourWidth >= 3)
- {
- cellHour = 4;
- }
- else if (halfHourWidth >= 2)
- {
- cellHour = 6;
- }
- else
- {
- cellHour = 12;
- }
- return cellHour;
- }
- }
-}
diff --git a/GanttChart/GanttChartView.cs b/GanttChart/GanttChartView.cs
deleted file mode 100644
index 96b5231..0000000
--- a/GanttChart/GanttChartView.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-
-namespace GanttChart
-{
- ///
- /// 甘特图控件
- ///
- [ToolboxBitmap(typeof(GanttChartView), "GanttChart.GanttChartView.bmp")]
- public partial class GanttChartView: Control
- {
- #region Private Members
- private HScrollBar _HScrollBar;
- private VScrollBar _VScrollBar;
-
- private TableLayoutPanel _Table;
- private Control _ContentControl;
-
- private GanttChartBrushes Brushes;
- #endregion
-
- #region ctor
- public GanttChartView()
- {
- _Table = new TableLayoutPanel();
- _Table.ColumnCount = 2;
- _Table.RowCount = 2;
- _Table.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
- _Table.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, VScrollWidth));
- _Table.RowStyles.Add(new RowStyle(SizeType.AutoSize));
- _Table.RowStyles.Add(new RowStyle(SizeType.Absolute, HScrollHeight));
-
- _ContentControl = new GanttChartCanvas();
- _ContentControl.Dock = DockStyle.Fill;
- _ContentControl.Margin = new Padding(0);
- _Table.Controls.Add(_ContentControl, 0, 0);
-
- _HScrollBar = new HScrollBar();
- _HScrollBar.Value = 0;
- _HScrollBar.Height = HScrollHeight;
- _HScrollBar.SmallChange = 1;
- _HScrollBar.LargeChange = 2;
- //_HScrollBar.Dock = DockStyle.Fill;
- _HScrollBar.Visible = true;
- _Table.Controls.Add(_HScrollBar, 0, 1);
-
-
- _VScrollBar = new VScrollBar();
- _VScrollBar.Value = 0;
- _VScrollBar.Width = VScrollWidth;
- _VScrollBar.SmallChange = 1;
- _VScrollBar.LargeChange = 2;
- //_VScrollBar.Dock = DockStyle.Fill;
- _VScrollBar.Visible = true;
- _Table.Controls.Add(_VScrollBar, 1, 0);
-
- _Table.Dock = DockStyle.Fill;
- Controls.Add(_Table);
-
- InitEvent();
- }
-
- #endregion
- ///
- /// 调整滚动条
- ///
- private void AdjustScrollbar()
- {
- var bottom = ItemHeight + RowSpacing * 2;
- if (Rows != null && Rows.Any())
- {
- if (StartDate != Rows.StartDate || Rows.IsChanged)
- {
- ComputeRowsAndItemsSize();
- Rows.IsChanged = false;
- Rows.StartDate = StartDate;
- }
- var last = Rows.Last();
- bottom = last.Bottom;
- }
- if (IsFixedRowHeight)
- {
- var h = ColumnHeight + (Rows?.Count ?? 0) * RowHeight + 200;
- if(h > Height - HScrollHeight)
- {
- _VScrollBar.Maximum = h - Height + HScrollHeight + 1;
- }
- else
- {
- _VScrollBar.Maximum = 0;
- }
- }
- else
- {
- _VScrollBar.Maximum = bottom - Height + HScrollHeight + 1 + 200;
- }
- _VScrollBar.Minimum = 0;
-
- _HScrollBar.Maximum = ((int)(EndDate.Date - StartDate.Date).TotalDays + 1) * DateWidth - Width + RowHeaderWidth + VScrollWidth + 1 + 200;
- _HScrollBar.Minimum = 0;
-
- _VScrollBar.Enabled = _VScrollBar.Maximum > 0;
- _HScrollBar.Enabled = _HScrollBar.Maximum > 0;
- }
- ///
- /// 重绘
- ///
- public new void Invalidate()
- {
- base.Invalidate();
- _ContentControl.Invalidate();
- }
- ///
- /// 销毁
- ///
- ///
- protected override void Dispose(bool disposing)
- {
- this.Brushes?.Dispose();
- base.Dispose(disposing);
- }
- class GanttChartCanvas : Control
- {
- public GanttChartCanvas()
- {
- SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
- SetStyle(ControlStyles.ResizeRedraw, true);
- SetStyle(ControlStyles.Selectable, true);
- }
- protected override void OnPaintBackground(PaintEventArgs pevent) { }
- }
- }
-}
diff --git a/GanttChart/GanttChartViewColumn.cs b/GanttChart/GanttChartViewColumn.cs
deleted file mode 100644
index b43a587..0000000
--- a/GanttChart/GanttChartViewColumn.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- public class GanttChartViewColumn
- {
- }
-}
diff --git a/GanttChart/GanttChartViewColumnGroup.cs b/GanttChart/GanttChartViewColumnGroup.cs
deleted file mode 100644
index 41aba2c..0000000
--- a/GanttChart/GanttChartViewColumnGroup.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- public class GanttChartViewColumnGroup
- {
- }
-}
diff --git a/GanttChart/GanttChartViewItem.cs b/GanttChart/GanttChartViewItem.cs
deleted file mode 100644
index 809baf8..0000000
--- a/GanttChart/GanttChartViewItem.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 甘特图项
- ///
- public class GanttChartViewItem : TimeRange
- {
- ///
- /// 项的时间范围集合
- ///
- public ICollection Ranges { get; set; }
- ///
- /// 标题
- ///
- public string Title { get; set; }
- ///
- /// 提示内容
- ///
- public string Tooltip { get; set; }
- ///
- /// 顶部位置
- ///
- internal int Top { get; set; }
- ///
- /// 文本宽度
- ///
- internal int TextWidth { get; set; }
- ///
- /// 数据
- ///
- public object Data { get; set; }
- ///
- /// 是否警告
- ///
- public bool IsWarnning { get; set; }
- }
-}
diff --git a/GanttChart/GanttChartViewItemBlockType.cs b/GanttChart/GanttChartViewItemBlockType.cs
deleted file mode 100644
index 5f90170..0000000
--- a/GanttChart/GanttChartViewItemBlockType.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 甘特图项的换行模式
- ///
- public enum GanttChartViewItemBlockType
- {
- ///
- /// 紧凑
- ///
- Compact,
- ///
- /// 文字超过换行
- ///
- TextOverBlock,
- ///
- /// 强制换行
- ///
- Block,
- ///
- /// 回归
- ///
- Return
- }
-}
diff --git a/GanttChart/GanttChartViewRow.cs b/GanttChart/GanttChartViewRow.cs
deleted file mode 100644
index 2e87b4b..0000000
--- a/GanttChart/GanttChartViewRow.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 甘特图行
- ///
- public class GanttChartViewRow
- {
- ///
- /// 标题
- ///
- public string Title { get; set; }
- ///
- /// 顶部
- ///
- internal int Top { get; set; }
- ///
- /// 按钮
- ///
- internal int Bottom { get; set; }
- ///
- /// 项集合
- ///
- public List Items { get; set; }
- }
-}
diff --git a/GanttChart/Properties/AssemblyInfo.cs b/GanttChart/Properties/AssemblyInfo.cs
deleted file mode 100644
index d8d03c1..0000000
--- a/GanttChart/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// 有关程序集的一般信息由以下
-// 控制。更改这些特性值可修改
-// 与程序集关联的信息。
-[assembly: AssemblyTitle("GanttChart")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("GanttChart")]
-[assembly: AssemblyCopyright("Copyright © 2019")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// 将 ComVisible 设置为 false 会使此程序集中的类型
-//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
-//请将此类型的 ComVisible 特性设置为 true。
-[assembly: ComVisible(false)]
-
-// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
-[assembly: Guid("dea91cb9-1011-4ee7-b8e1-72428f731789")]
-
-// 程序集的版本信息由下列四个值组成:
-//
-// 主版本
-// 次版本
-// 生成号
-// 修订号
-//
-//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
-//通过使用 "*",如下所示:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/GanttChart/Properties/Resources.Designer.cs b/GanttChart/Properties/Resources.Designer.cs
deleted file mode 100644
index da1a28c..0000000
--- a/GanttChart/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// 此代码由工具生成。
-// 运行时版本:4.0.30319.42000
-//
-// 对此文件的更改可能会导致不正确的行为,并且如果
-// 重新生成代码,这些更改将会丢失。
-//
-//------------------------------------------------------------------------------
-
-namespace GanttChart.Properties {
- using System;
-
-
- ///
- /// 一个强类型的资源类,用于查找本地化的字符串等。
- ///
- // 此类是由 StronglyTypedResourceBuilder
- // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
- // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
- // (以 /str 作为命令选项),或重新生成 VS 项目。
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// 返回此类使用的缓存的 ResourceManager 实例。
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GanttChart.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// 重写当前线程的 CurrentUICulture 属性,对
- /// 使用此强类型资源类的所有资源查找执行重写。
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
- }
-}
diff --git a/GanttChart/Properties/Resources.resx b/GanttChart/Properties/Resources.resx
deleted file mode 100644
index af7dbeb..0000000
--- a/GanttChart/Properties/Resources.resx
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
\ No newline at end of file
diff --git a/GanttChart/Properties/Settings.Designer.cs b/GanttChart/Properties/Settings.Designer.cs
deleted file mode 100644
index 9879631..0000000
--- a/GanttChart/Properties/Settings.Designer.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// 此代码由工具生成。
-// 运行时版本:4.0.30319.42000
-//
-// 对此文件的更改可能会导致不正确的行为,并且如果
-// 重新生成代码,这些更改将会丢失。
-//
-//------------------------------------------------------------------------------
-
-namespace GanttChart.Properties {
-
-
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
-
- private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default {
- get {
- return defaultInstance;
- }
- }
- }
-}
diff --git a/GanttChart/Properties/Settings.settings b/GanttChart/Properties/Settings.settings
deleted file mode 100644
index 3964565..0000000
--- a/GanttChart/Properties/Settings.settings
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/GanttChart/TimeRange.cs b/GanttChart/TimeRange.cs
deleted file mode 100644
index c7458f2..0000000
--- a/GanttChart/TimeRange.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace GanttChart
-{
- ///
- /// 时间范围
- ///
- public class TimeRange
- {
- ///
- /// 开始时间
- ///
- public DateTime StartTime { get; set; }
- ///
- /// 结束时间
- ///
- public DateTime EndTime { get; set; }
- ///
- /// 左边
- ///
- internal int Left { get; set; }
- ///
- /// 宽度
- ///
- internal int Width { get; set; }
- }
-}
diff --git a/SunlightCentralizedControlManagement(SCCM).sln b/SunlightCentralizedControlManagement(SCCM).sln
index 24208a7..708ea7a 100644
--- a/SunlightCentralizedControlManagement(SCCM).sln
+++ b/SunlightCentralizedControlManagement(SCCM).sln
@@ -5,8 +5,6 @@ VisualStudioVersion = 17.11.35312.102
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SunlightCentralizedControlManagement_SCCM_", "SunlightCentralizedControlManagement_SCCM_.csproj", "{2CFE8A79-C7DC-47AC-8D0C-2E03010E2458}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GanttChart", "GanttChart\GanttChart.csproj", "{DEA91CB9-1011-4EE7-B8E1-72428F731789}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -17,10 +15,6 @@ Global
{2CFE8A79-C7DC-47AC-8D0C-2E03010E2458}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2CFE8A79-C7DC-47AC-8D0C-2E03010E2458}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2CFE8A79-C7DC-47AC-8D0C-2E03010E2458}.Release|Any CPU.Build.0 = Release|Any CPU
- {DEA91CB9-1011-4EE7-B8E1-72428F731789}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DEA91CB9-1011-4EE7-B8E1-72428F731789}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DEA91CB9-1011-4EE7-B8E1-72428F731789}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DEA91CB9-1011-4EE7-B8E1-72428F731789}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/View/ProductionPlanningView.xaml b/View/ProductionPlanningView.xaml
index 44eb6ed..f496569 100644
--- a/View/ProductionPlanningView.xaml
+++ b/View/ProductionPlanningView.xaml
@@ -21,8 +21,8 @@
-
-
+
+
diff --git a/View/ProductionPlanningView.xaml.cs b/View/ProductionPlanningView.xaml.cs
index 19bbf14..b07af30 100644
--- a/View/ProductionPlanningView.xaml.cs
+++ b/View/ProductionPlanningView.xaml.cs
@@ -50,21 +50,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
private void UserControl_Loaded(object sender, RoutedEventArgs e)//打开页面时的操作
{
- string html = @"
-
-
-
-
-
-
-
- ";
-
- webBrowser.NavigateToString(html);
+
}