作成日: 2020/10/27 最終更新日: 2020/10/27
文書種別
使用方法
詳細
終了時間を23:59に設定したタスクをドラッグ&ドロップして移動すると、終了日時は、移動後の翌日に設定されます。内部的に、終了日の24時=翌日の0時に設定されるためで、これは仕様上の動作となります。
◇設定例
(移動前)
開始日:2020/10/20 00:00:00
終了日:2020/10/21 23:59:00(期間:2日間)
(移動後)
開始日:2020/07/21 00:00:00
終了日:2020/07/23 00:00:00(期間:2日間)
この動作を避け、移動後の日時のままにするには、タスクの移動時に発生するAfterEditTaskイベントにて、終了日時を明示的に設定してください。
◇設定例
開始日:2020/07/20 00:00:00
終了日:2020/07/22 23:59:00
◎サンプルコード(VB)
◇設定例
(移動前)
開始日:2020/10/20 00:00:00
終了日:2020/10/21 23:59:00(期間:2日間)
(移動後)
開始日:2020/07/21 00:00:00
終了日:2020/07/23 00:00:00(期間:2日間)
この動作を避け、移動後の日時のままにするには、タスクの移動時に発生するAfterEditTaskイベントにて、終了日時を明示的に設定してください。
◇設定例
開始日:2020/07/20 00:00:00
終了日:2020/07/22 23:59:00
◎サンプルコード(VB)
Imports C1.Win.C1GanttView
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' タスクの作成
C1GanttView1.Tasks.Clear()
Dim task As C1.Win.C1GanttView.Task
task = New C1.Win.C1GanttView.Task()
task.Name = "予定1"
task.Mode = TaskMode.Manual
task.Start = New DateTime(2020, 10, 20, 0, 0, 0)
task.Finish = New DateTime(2020, 10, 21, 23, 59, 0)
C1GanttView1.Tasks.Add(task)
task = New C1.Win.C1GanttView.Task()
task.Name = "予定2"
task.Mode = TaskMode.Manual
task.Start = New DateTime(2020, 10, 21, 0, 0, 0)
task.Finish = New DateTime(2020, 10, 21, 23, 59, 0)
C1GanttView1.Tasks.Add(task)
End Sub
Private Sub C1GanttView1_AfterEditTask(sender As Object, e As CancelTaskArgs) Handles C1GanttView1.AfterEditTask
' タスクの終了日時の設定
Dim dayOffset1 As DateTimeOffset = e.Task.Start.Value
Dim dayOffset2 As DateTimeOffset = e.Task.Finish.Value
Dim daySpan As TimeSpan = dayOffset2 - dayOffset1
e.Task.Finish = e.Task.Start.Value.Date.AddDays(daySpan.Days - 1) + New TimeSpan(23, 59, 0)
End Sub
◎サンプルコード(C#)using C1.Win.C1GanttView;
namespace C1GanttView_EndDate
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// タスクの作成
c1GanttView1.Tasks.Clear();
C1.Win.C1GanttView.Task task;
task = new C1.Win.C1GanttView.Task();
task.Name = "予定1";
task.Mode = TaskMode.Manual;
task.Start = new DateTime(2020, 10, 20, 0, 0, 0);
task.Finish = new DateTime(2020, 10, 21, 23, 59, 0);
c1GanttView1.Tasks.Add(task);
task = new C1.Win.C1GanttView.Task();
task.Name = "予定2";
task.Mode = TaskMode.Manual;
task.Start = new DateTime(2020, 10, 21, 0, 0, 0);
task.Finish = new DateTime(2020, 10, 21, 23, 59, 0);
c1GanttView1.Tasks.Add(task);
}
private void c1GanttView1_AfterEditTask(object sender, C1.Win.C1GanttView.CancelTaskArgs e)
{
// タスクの終了日時の設定
DateTimeOffset dayOffset1 = e.Task.Start.Value;
DateTimeOffset dayOffset2 = e.Task.Finish.Value;
TimeSpan daySpan = (dayOffset2 - dayOffset1);
e.Task.Finish = (e.Task.Start.Value.Date.AddDays((daySpan.Days - 1)) + new TimeSpan(23, 59, 0));
}
}
}
関連情報
旧文書番号
86132