qq_37727187 2023-07-27 19:09 采纳率: 96%
浏览 7
已结题

winfrom如何实现可以拖动的甘特图呢

winfrom如何实现可以拖动的甘特图呢,左边新建任务,右边根据新建任务生成一个甘特图

  • 写回答

3条回答 默认 最新

  • 度假的小鱼 全栈领域新星创作者 2023-07-30 23:10
    关注

    在WinForms中实现可以拖动的甘特图,可以使用第三方控件库来实现,例如DevExpress、TwinTech等。这些库都提供了丰富的API和示例代码,可以帮助您快速实现甘特图拖动功能 。以下是一个使用DevExpress实现可以拖动的甘特图的示例代码:

    1.在Visual Studio中添加DevExpress控件库。
    2.在窗体中添加DevExpress的GanttControl控件。
    3.在窗体的Load事件中,添加以下代码初始化GanttControl控件:

    private void Form1_Load(object sender, EventArgs e)  
    {  
        // 设置GanttControl控件的属性  
        ganttControl1.Dock = DockStyle.Fill;  
        ganttControl1.Zoom = 100;  
        ganttControl1.ShowWeekNumbers = true;  
        ganttControl1.ShowMonthHeaders = true;  
        ganttControl1.ShowDayHeaders = true;  
        ganttControl1.ScaleMode = ScaleMode.Strip;  
        ganttControl1.AssignmentsTreeView.ShowResources = true;  
        ganttControl1.AssignmentsTreeView.ShowResourceAssignments = true;  
        ganttControl1.TimelineView.AxisX.MajorGrid.Enabled = false;  
        ganttControl1.TimelineView.AxisX.MinorGrid.Enabled = false;  
        ganttControl1.TimelineView.AxisY.MajorGrid.Enabled = false;  
        ganttControl1.TimelineView.AxisY.MinorGrid.Enabled = false;  
      
        // 添加任务和资源  
        Task task1 = new Task("Task 1", new DateTime(2023, 3, 1), new DateTime(2023, 3, 5));  
        Task task2 = new Task("Task 2", new DateTime(2023, 3, 6), new DateTime(2023, 3, 10));  
        Resource resource1 = new Resource("Resource 1");  
        Resource resource2 = new Resource("resource 2");  
      
        // 将任务分配给资源  
        task1.Resources = new List<Resource> { resource1, resource2 };  
        task2.Resources = new List<Resource> { resource1 };  
      
        // 添加任务和资源到GanttControl控件中  
        ganttControl1.Tasks.Add(task1);  
        ganttControl1.Tasks.Add(task2);  
        ganttControl1.Resources.Add(resource1);  
        ganttControl1.Resources.Add(resource2);  
    }
    
    

    4.在GanttControl控件的MouseDown事件中,添加以下代码来开始拖动甘特图:

    private void ganttControl1_MouseDown(object sender, MouseEventArgs e)  
    {  
        if (e.Button == MouseButtons.Left)  
        {  
            ganttControl1.StartMoving();  
        }  
    }
    
    

    5.在GanttControl控件的MouseMove事件中,添加以下代码来移动甘特图:

    private void ganttControl1_MouseMove(object sender, MouseEventArgs e)  
    {  
        if (ganttControl1.IsMoving)  
        {  
            Point point = e.Location;  
            point.Offset(-ganttControl1.Left, -ganttControl1.Top);  
            ganttControl1.Location = point;  
        }  
    }
    
    

    6.在GanttControl控件的MouseUp事件中,添加以下代码来结束拖动甘特图:

    private void ganttControl1_MouseUp(object sender, MouseEventArgs e)  
    {  
        if (e.Button == MouseButtons.Left)  
        {  
            ganttControl1.StopMoving();  
        }  
    }
    
    

    这样就可以实现在WinForms中可以拖动的甘特图了。还可以使用GanttChart控件,它是一款开源且功能强大的C#甘特图控件,支持WinForm应用程序。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月15日
  • 已采纳回答 8月7日
  • 创建了问题 7月27日

悬赏问题

  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写