编辑
2025-02-03
C# 应用
00
请注意,本文编写于 92 天前,最后修改于 92 天前,其中某些信息可能已经过时。

目录

先看个样式
官网
1. 无需额外依赖,轻松上手
2. 强大的功能,满足多样需求
3. 灵活的用户界面定制
4. 打印支持,完美呈现
5. 关键路径和浮动时间计算
快速上手指南
创建甘特图并添加任务
常见任务操作
自定义任务数据:为每个任务设置不同颜色
注意
许可证
立即下载,开启高效项目管理之旅!

在项目管理的世界里,甘特图是不可或缺的工具。它不仅能帮助你直观地展示项目进度,还能有效地管理任务和资源。然而,找到一个既强大又易用的甘特图控件并不容易。今天,我们为你推荐一款颠覆性的工具——.NET C# Winforms Gantt Chart 控件,它将彻底改变你的项目管理方式!

先看个样式

image.png

官网

C#
https://github.com/jakesee/ganttchart

为什么选择.NET C# Winforms Gantt Chart 控件?

1. 无需额外依赖,轻松上手

这款控件完全基于.NET Framework,无需任何额外的预先条件。只需下载最新的源代码并在Microsoft Visual Studio 2017中构建库,你就可以立即开始使用。

2. 强大的功能,满足多样需求

.NET C# Winforms Gantt Chart 控件支持多种时间单位(周、天、小时),并且可以自定义其他时间分辨率。它还提供了单任务、分组任务、前置/后置任务、拆分任务和标记资源等功能。此外,每个任务都有完成百分比属性,帮助你更好地跟踪进度。

3. 灵活的用户界面定制

通过各种鼠标事件,你可以直接在甘特图上自定义用户界面体验。默认的鼠标命令可以通过继承来覆盖,满足你的个性化需求。

4. 打印支持,完美呈现

打印功能尊重页面边距、方向和每页的多个页面设置,确保你的甘特图在纸质版上也能完美呈现。

5. 关键路径和浮动时间计算

控件能够自动确定关键路径和浮动时间,帮助你更好地进行项目规划和风险管理。

快速上手指南

创建甘特图并添加任务

C#
public Form1() { InitializeComponents(); var manager = new ProjectManager(); var task = new Task() { Name = "Hello World" }; manager.Add(task); var chart = new Chart(); chart.Init(manager); this.Controls.Add(chart); this.AutoScroll = true; // this is no longer required }

常见任务操作

C#
// 设置任务持续时间 _mManager.SetDuration(wake, 3); // 组织任务,设置分组和前置任务 _mManager.Group(work, wake); _mManager.Relate(wake, teeth); // 分配资源 _mManager.Assign(wake, jake); // 拆分任务 _mManager.Split(pack, new MyTask(_mManager), new MyTask(_mManager), 2); // 设置工具提示 _mChart.SetToolTip(wake, string.Join(", ", _mManager.ResourcesOf(wake).Select(x => (x as MyResource).Name)));

自定义任务数据:为每个任务设置不同颜色

C#
public partial class ExampleSimple : Form { ProjectManager _mProject; public ExampleSimple() { InitializeComponent(); _mProject = new ProjectManager(); _mProject.Add(new Task() { Name = "New Task" }); _mProject.Add(new ColoredTask() { Name = "Purple Task", Color = Color.Purple }); _mProject.Add(new ColoredTask() { Name = "Gold Task", Color = Color.Gold }); _mChart.Init(_mProject); // 自定义任务绘制行为 _mChart.PaintTask += (s, e) => { ColoredTask ctask = e.Task as ColoredTask; if (ctask != null) { var format = new TaskFormat(); format = e.Format; format.BackFill = new SolidBrush(ctask.Color); e.Format = format; } }; // 获取任务的自定义数据 _mChart.TaskSelected += (s, e) => { ColoredTask ctask = e.Task as ColoredTask; if (ctask != null) { MessageBox.Show("Selected " + ctask.Color.ToString()); } }; } } // 自定义任务类 public class ColoredTask : Task { public ColoredTask() : base() {} public Color Color { get; set; } }

注意

中文日期显示

C#
// 设置简体中文 CultureInfo cultureSimplifiedChinese = new CultureInfo("zh-CN"); Thread.CurrentThread.CurrentCulture = cultureSimplifiedChinese; Thread.CurrentThread.CurrentUICulture = cultureSimplifiedChinese;

当然你可以去修改___GetLabelFormat方法

C#
private void ___GetLabelFormat(DateTime datetime, DateTime datetimeprev, out LabelFormat minor, out LabelFormat major) { minor = new LabelFormat() { Text = string.Empty, Font = this.Font, Color = HeaderFormat.Color, Margin = 3, TextAlign = ChartTextAlign.MiddleCenter }; major = new LabelFormat() { Text = string.Empty, Font = this.Font, Color = HeaderFormat.Color, Margin = 3, TextAlign = ChartTextAlign.MiddleLeft }; System.Globalization.GregorianCalendar calendar = new System.Globalization.GregorianCalendar(); switch (TimeResolution) { case TimeResolution.Week: minor.Text = calendar.GetWeekOfYear(datetime, System.Globalization.CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday).ToString(); if(datetime.Month != datetimeprev.Month) major.Text = datetime.ToString("MMMM"); break; case TimeResolution.Hour: minor.Text = datetime.Hour.ToString(); if (datetime.Day != datetimeprev.Day) major.Text = datetime.ToString("dd MMM yyyy"); break; default: // case TimeResolution.Day: -- to implement other TimeResolutions, add to this function or listen to the the PaintTimeline event minor.Text = ShortDays[datetime.DayOfWeek]; // datetime.ToString("dddd").Substring(0, 1).ToUpper(); if (datetime.DayOfWeek == DayOfWeek.Sunday) major.Text = datetime.ToString("dd MMM yyyy"); break; } }

许可证

这款控件项目基于MIT许可证发布,详情请参阅LICENSE.md

立即下载,开启高效项目管理之旅!

不要再犹豫,立即下载.NET C# Winforms Gantt Chart 控件,体验前所未有的项目管理效率提升吧!更多信息请访问官方文档博客

本文作者:rick

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!