PowerTools MultiRow for Windows Forms 8.0J
Sort(Int32,SortOrder,IComparer) メソッド
使用例 

GcMultiRowの内容を並べ替える基準となるセルのインデックス。
並べ替え順序。
カスタムの並べ替え操作を実行するSystem.Collections.IComparerの実装。
GcMultiRowコントロールの内容を、指定した列の内容に基づいて昇順または降順に並べ替えます。
構文
Public Overloads Sub Sort( _
   ByVal cellIndex As Integer, _
   ByVal sortOrder As SortOrder, _
   ByVal comparer As IComparer _
) 

パラメータ

cellIndex
GcMultiRowの内容を並べ替える基準となるセルのインデックス。
sortOrder
並べ替え順序。
comparer
カスタムの並べ替え操作を実行するSystem.Collections.IComparerの実装。
例外
例外解説
System.ArgumentOutOfRangeExceptioncellIndex0未満か、RowCellの数 - 1を超えています。
System.ComponentModel.InvalidEnumArgumentExceptionsortOrderが、列挙体System.Windows.Forms.SortOrderの有効な値ではありません。
System.InvalidOperationException

このメソッドは、Templateがnull 参照 (Visual Basicでは Nothing)の場合には使用できません。

または

VirtualModetrueで、なおかつDataSourceがnull 参照 (Visual Basicでは Nothing)です。

解説

このメソッドを使用すると、GcMultiRowクラスの並べ替え機能を高度にカスタマイズできます。高度にカスタマイズされた並べ替え操作を実装するために、ColumnHeaderCellCellMouseClickイベントのイベントハンドラを記述し、System.Collections.IComparerインタフェースを実装するクラスのインスタンスをパラメーターとして指定してこのメソッドを呼び出すことができます。この場合は通常、SortModeプロパティをSortMode.Programmaticに設定して、並べ替えが自動的に行われないようにし、並べ替えグリフを表示するスペースを設けます。Programmatic並べ替えモードに設定されたセルで並べ替えるときは、SortGlyphDirectionプロパティを設定して、並べ替えグリフを自分で表示する必要があります。

AllowUserToAddRowsプロパティの値がtrueの場合は、最後の行が常に最後の行になります。この場合、並べ替え演算子は最後の行(コミットされていない新しい行)には作用しません。

使用例
次のサンプルコードは、独自の並べ替え比較ロジックを使用してGcMultiRowコントロールをコードによって並べ替える方法を示します。このサンプルを実行するには、フォームにGcMultiRowコントロールを作成し、テンプレートを設定します。このテンプレートには、1つ以上のセルを含む行が必要です。このメソッドは、ボタンクリックイベントハンドラやフォームの読み込み時などに呼び出すことができます。
void SortByCodeCustomCompare()
{
    this.gcMultiRow1.Sort(0, SortOrder.Ascending, new StringNumberCompare());
}

class StringNumberCompare : System.Collections.IComparer
{
    public int Compare(object x, object y)
    {
        if (x is string && y is string)
        {
            int a;
            int b;
            if (int.TryParse(x as string, out a) && int.TryParse(y as string, out b))
            {
                return a.CompareTo(b);
            }
        }
        return 0;
    }
}
Private Sub SortByCodeCustomCompare()
    Me.gcMultiRow1.Sort(0, SortOrder.Ascending, New StringNumberCompare())
End Sub

Private Class StringNumberCompare
    Implements System.Collections.IComparer
    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
        If TypeOf x Is String AndAlso TypeOf y Is String Then
            Dim a As Integer
            Dim b As Integer
            If Integer.TryParse(TryCast(x, String), a) AndAlso Integer.TryParse(TryCast(y, String), b) Then
                Return a.CompareTo(b)
            End If
        End If
        Return 0
    End Function
End Class
参照

GcMultiRow クラス
GcMultiRow メンバ
オーバーロード一覧

 

 


© 2008-2015 GrapeCity inc. All rights reserved.