バージョン

Sort(IComparer) メソッド

コレクション内のタブを並べ替えます。
シンタックス
'宣言
 
Public Overloads Sub Sort( _
   ByVal comparer As IComparer _
) 
public void Sort( 
   IComparer comparer
)

パラメータ

comparer
要素を比較するときに使用するIComparer実装。
解説
この操作を行うと、タブの UltraTab.VisibleIndex プロパティの値が変更され、タブの表示順序が変わります。
使用例
Imports Infragistics.Win
Imports Infragistics.Win.UltraWinTabs
Imports Infragistics.Win.UltraWinTabControl

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

    ' The VisibleTabs collection exposes a Sort method
    ' with 3 overloads.

    ' Calling the method without any parameters will do
    ' an ascending case-sensitive sort based on the
    ' tabs' Text values.
    Me.ultraTabControl1.VisibleTabs.Sort()

    ' The second overload allows you to specify whether
    ' to sort ascending or descending based on the 
    ' tabs' (case-sensitive) Text values
    Me.ultraTabControl1.VisibleTabs.Sort(SortDirection.Descending)

    ' The third overload allows you to specify a custom
    ' comparer. In this case, a comparer that will do a 
    ' case-insensitive sort.
    Me.ultraTabControl1.VisibleTabs.Sort(New MyTabComparer(SortDirection.Descending))

    ' Calling the Sort method affects tab placement in the
    ' 'VisibleTabs' collection and changes each tab's 'VisibleIndex'
    ' property but does not affect the tab's 'Index' property or
    ' its position in the 'Tabs' collection.

    ' Tab placement in the 'VisibleTabs' collection can
    ' also be changed by setting the tab's 'VisibleIndex'
    ' property or calling its 'Reposition' method
    Dim utab As UltraTab = Me.ultraTabControl1.Tabs(2)
    utab.VisibleIndex = 0
    utab.Reposition(Me.ultraTabControl1.Tabs(1), RelativePosition.Before)

    ' The 'VisibleTabs' collection also exposes properties and
    ' methods for filtering out non-selectable tabs, i.e. tabs
    ' whose 'Visible' or 'Enabled' property is set to false.
    utab = Me.ultraTabControl1.VisibleTabs.FirstSelectableTab
    utab = Me.ultraTabControl1.VisibleTabs.LastSelectableTab
    utab = Me.ultraTabControl1.VisibleTabs.GetNextSelectableTab(utab, True)
    utab = Me.ultraTabControl1.VisibleTabs.GetPreviousSelectableTab(utab, True)

    ' Note: the 2nd parameter to the method calls above specifies
    ' whether to wrap around when the last or first selectable tab
    ' is passed in.

End Sub

Private Class MyTabComparer
    Implements IComparer

    Private direction As SortDirection

    Public Sub New(ByVal direction As SortDirection)

        Me.direction = direction

    End Sub

    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare

        Dim tab1 As UltraTab = x
        Dim tab2 As UltraTab = y

        Dim string1 As String = tab1.Text
        Dim string2 As String = tab2.Text

        Dim ret As Integer

        If string1 Is Nothing Then
            ret = -1
        ElseIf string2 Is Nothing Then
            ret = 1
        Else
            ' Do a case-insensitive compare
            ret = String.Compare(string1, string2, True, System.Globalization.CultureInfo.CurrentCulture)
        End If

        ' If descending then flip the sign
        If Me.direction = SortDirection.Descending Then
            ret *= -1
        End If

        Return ret

    End Function

End Class
using System.Diagnostics;
using Infragistics.Win;
using Infragistics.Win.UltraWinTabs;
using Infragistics.Win.UltraWinTabControl;

private void button9_Click(object sender, System.EventArgs e)
{
	// The VisibleTabs collection exposes a Sort method
	// with 3 overloads.

	// Calling the method without any parameters will do
	// an ascending case-sensitive sort based on the
	// tabs' Text values.
	this.ultraTabControl1.VisibleTabs.Sort();

	// The second overload allows you to specify whether
	// to sort ascending or descending based on the 
	// tabs' (case-sensitive) Text values
	this.ultraTabControl1.VisibleTabs.Sort( SortDirection.Descending );

	// The third overload allows you to specify a custom
	// comparer. In this case, a comparer that will do a 
	// case-insensitive sort.
	this.ultraTabControl1.VisibleTabs.Sort( new MyTabComparer(SortDirection.Descending) );

	// Calling the Sort method affects tab placement in the
	// 'VisibleTabs' collection and changes each tab's 'VisibleIndex'
	// property but does not affect the tab's 'Index' property or
	// its position in the 'Tabs' collection.

	// Tab placement in the 'VisibleTabs' collection can
	// also be changed by setting the tab's 'VisibleIndex'
	// property or calling its 'Reposition' method
	UltraTab tab = this.ultraTabControl1.Tabs[2];
	tab.VisibleIndex = 0;
	tab.Reposition( this.ultraTabControl1.Tabs[1], RelativePosition.Before );

	// The 'VisibleTabs' collection also exposes properties and
	// methods for filtering out non-selectable tabs, i.e. tabs
	// whose 'Visible' or 'Enabled' property is set to false.
	tab = this.ultraTabControl1.VisibleTabs.FirstSelectableTab;
	tab = this.ultraTabControl1.VisibleTabs.LastSelectableTab;
	tab = this.ultraTabControl1.VisibleTabs.GetNextSelectableTab( tab, true );
	tab = this.ultraTabControl1.VisibleTabs.GetPreviousSelectableTab( tab, true );
	
	// Note: the 2nd parameter to the method calls above specifies
	// whether to wrap around when the last or first selectable tab
	// is passed in.
}

private class MyTabComparer : IComparer
{
	private SortDirection direction;

	internal MyTabComparer( SortDirection direction )
	{
		this.direction = direction;
	}

	int IComparer.Compare(object x, object y)
	{
		UltraTab tab1 = x as UltraTab;
		UltraTab tab2 = y as UltraTab;

		string string1 = tab1.Text;
		string string2 = tab2.Text;

		int ret;

		if ( string1 == null )
			ret = -1;
		else				
		if ( string2 == null )
			ret = 1;
		else
		{
			// Do a case-insensitive compare
			ret	= string.Compare( string1, string2, true, System.Globalization.CultureInfo.CurrentCulture);
		}

		// If descending then flip the sign
		if ( this.direction == SortDirection.Descending )
			ret *= -1;

		return ret;
	}
}
参照