バージョン

WinGanttView の並べ替え

WinGanttView™ コントロールによって、コントロールのグリッド セクションで単一および複数のタスク フィールドを並べ替えることができます。 コントロールのグリッド領域の列ヘッダーを Shift キーを押しながらクリックすることによって、タスクはユーザーインターフェイスで複数フィールドの基準で並べ替えることができます。 タスク フィールドを SortedFields コレクションに追加することによってコードで並べ替えを実行することも可能です。 Comparer プロパティを使用してカスタムの並べ替えを実行することも可能です。

Note

注: 並べ替えはすべての Task プロパティでサポートされるわけではありません。たとえば Dependencies コレクションでの並べ替えはサポートされません。

以下の例のコードは、タスクとタスク詳細を表示するフォームに UltraGanttView コントロールをドロップしてあることを前提とします。

Visual Basic の場合:

Me.ultraCalendarInfo1.Tasks.SortedFields.Add(SortableTaskField.Name, SortOrder.Ascending)
Me.ultraCalendarInfo1.Tasks.SortedFields.Add(SortableTaskField.Duration, SortOrder.Descending)
Me.ultraCalendarInfo1.Tasks.SortedFields.Add
(SortableTaskField.PercentComplete, SortOrder.Descending)

C# の場合:

this.ultraCalendarInfo1.Tasks.SortedFields.Add(SortableTaskField.Name, SortOrder.Ascending);
this.ultraCalendarInfo1.Tasks.SortedFields.Add(SortableTaskField.Duration, SortOrder.Descending);
this.ultraCalendarInfo1.Tasks.SortedFields.
Add(SortableTaskField.PercentComplete, SortOrder.Descending);

カスタムの並べ替え

Visual Basic の場合:

' カスタム並べ替え
Me.ultraGanttView1.CalendarInfo.Tasks.SortedFields.Comparer = New MySortComparer ()
Public Class MySortComparer
    Implements System.Collections.Generic.IComparer(Of Task)
    #Region "IComparer Members"
    Public Function Compare(ByVal x As Task, ByVal y As Task) As Integer
        Dim xTask As Task = DirectCast(x, Task)
        Dim yTask As Task = DirectCast(y, Task)
        'TODO: Task フィールドを比較するためのロジック。例:
         Return xTask.Deadline.CompareTo(yTask.Deadline)
    End Function
    #End Region "IComparer Members"
End Class

C# の場合:

// カスタム並べ替え
this.ultraGanttView1.CalendarInfo.Tasks.SortedFields.Comparer = new MySortComparer();
public class MySortComparer : System.Collections.Generic.IComparer<Task>
    {
        #region IComparer Members
        public int Compare(Task x, Task y)
        {
            Task xTask = (Task)x;
            Task yTask = (Task)y;
            //TODO: Task フィールドを比較するためのロジック。例:
            return xTask.Deadline.CompareTo(yTask.Deadline);
        }
        #endregion IComparer Members
    }